我正在尝试以正确的(或至少是最好的)方式开始使用命名空间.
我试图做的第一件事是避免放在using namespace xxx;
我的文件的开头.相反,我希望using xxx::yyy
尽可能在本地.
这是一个小程序,说明了这一点:
#include#include #include int main() { using std::cout; using std::endl; srand(time(0)); for(int i=0; i<10;++i) cout << rand() % 100 << endl; return 0; }
如果我省略了行,using std::cout;
或者using std::endl
编译器会在我尝试使用cout
或时抱怨endl
.
但为什么不需要这个srand
,rand
而且time
?我很确定他们在std
,因为如果我试着专门倒std::
在他们面前,我的代码工作正常.
如果你使用cstdlib等.它们中的名称放在global和std :: namespaces中,因此您可以选择使用std ::前缀.这被某些人视为特征,并被其他人视为错误.