C++ namespaces - “using” or explicitly stated?
Possible Duplicates:
Why is ‘using namespace std;’ considered a bad practice in C++?
Using std Namespace
这只是个人喜好的问题吗?还是有合理的理由选择
1 2 3 | using namespace std; #include <string> myString string; |
或
1 2 | #include <string> myString std::string; |
我认为每次在拖拽类型时都显式地声明名称空间可以避免任何名称冲突的可能性(或者编译器会警告是否存在歧义?)
问题:是否有一个令人信服的论点?
这是我在同一主题上写的另一个答案的修改版。到第3版。
主要的问题是名称冲突,如果代码中有一个名为
1 2 3 4 5 6 7 | #include using namespace std; int count; int main(int argc, char* argv[]){ count = 1; } |
不管编译器有什么问题,任何人来读你的代码都是一个问题。这些额外的5个字符确保下一个维护代码的人完全知道您的意思,而不必每隔一行检查文件的顶部,以查看您在编写
< BR>值得注意的是,您不应该将
(从有效C++)在大多数情况下使用非常有益。
1 | using std::swap |
就像有一个专门的swap版本一样,编译器将使用它,否则它将回到
以使用PIMPL习惯用法的代码为例。其中,作为默认副本,可以复制实际实现中的所有数据,其中所需要做的就是交换指针。使用专门的交换可以节省大量的执行时间,并且设计良好的库应该专门化它。
< BR>综上所述,
总是喜欢
using std::swap 而不是std::swap() 。避免在头文件中使用
using namespace std ,由于传播而不惜任何代价,尽量避免在实现文件中使用它。在每个文件的顶部都有成千上万的
using std::foo 不是一个可行的方法。最多将其用于常用类。
其他一切都是意见。
我个人更喜欢
例如:
1 2 3 4 | #include<string> using std::string; string x="abc"; |
使用
有关详细信息,请阅读(强烈建议)。
CPP文件中的using很好。您希望在头中使用第二种语法,这样就不会在整个项目中传播它们。