我想知道在包含using指令后我不应该将哪些单词用作变量。我似乎无法找到命名空间列表:(非常感谢帮助:)
答案 0 :(得分:2)
std
命名空间中所有名称的最权威列表是C ++标准。当前版本长度超过1300页,可能在std
中包含数千个唯一标识符。除此之外,一些编译器还可能在std
中包含一些特定于平台的标识符,并且这些标识符基本上没有记录 - 因此您必须检查相关编译器的源代码(如果可能的话),每次修补时再重新检查一次。
似乎令人生畏?很好,所以希望我能引起你的注意。
不要在代码中执行using namespace std
。 特别是在标头文件中不要use namespace std
。将您的标识符放入自己的名称空间。现在你不必关心其命名空间中的内容。无论你想要什么,都可以打电话。
我只是懒惰,但要聪明一点。如果您想从std
提取特定名称,那么您不必一遍又一遍地输入std::
,只需提取这些内容:
using std::string;
......没有你不需要的东西。但仅在您的CPP文件中执行此操作,绝不会在标题中执行此操作。
答案 1 :(得分:1)
更好的主意:不要在代码中使用using namespace std;
。我从未听说过如何在std :: namespace中获取所有内容的列表。
答案 2 :(得分:0)
除了John Dibling的回答所提供的信息之外,我还想指出,即使你写using namespace std;
,也不一定要避免std命名空间中的名字。您可以通过限定名称来解决存在using
指令时的歧义。您甚至可以使用顶级::
来限定“全局”命名空间中的名称。
#include <iostream>
using namespace std;
int cout;
int main() {
::cout = 10;
}
我想说明这一点的原因是我知道许多C ++程序员,即使使用它几年后,也不知道如何在全局命名空间中限定名称。