【发布时间】:2020-06-11 16:05:45
【问题描述】:
我学会了打字
using namespace std;
在程序的开头是一个坏习惯,因为它包含了命名空间中的每一个函数。如果存在名称冲突,这可能会导致错误。
我的问题是,有没有一种方法可以指定您不想要使用哪些命名空间函数?有没有什么说法,比如
not_using std::cin;
这可以做到吗?
【问题讨论】:
标签: c++ namespaces std
我学会了打字
using namespace std;
在程序的开头是一个坏习惯,因为它包含了命名空间中的每一个函数。如果存在名称冲突,这可能会导致错误。
我的问题是,有没有一种方法可以指定您不想要使用哪些命名空间函数?有没有什么说法,比如
not_using std::cin;
这可以做到吗?
【问题讨论】:
标签: c++ namespaces std
您不能这样做(包括所有内容,然后选择性地排除某些内容)。
您的选择是:
1) 始终明确限定名称。赞std::vector<int> v;
2) 使用using namespace std; 提取所有名称
3) 只输入您需要的名称,例如using std::vector;,然后执行vector<int> v; - 不会提取“vector”以外的名称。
注意:using namespace std; 不必进入全局范围并污染整个文件。如果需要,您可以在函数中执行此操作:
void f() {
using namespace std;
// More code
}
这样,只有f() 会拉入其本地范围内的所有名称。 using std::vector; 等也是如此。
【讨论】:
您可以using ns_name::name; 只是您想要无限制访问的名称。
【讨论】:
不要使用全局命名空间范围,而是使用以下语法: 例如 : std::cout :
有关更多示例,请阅读以下内容: http://www.cplusplus.com/doc/tutorial/namespaces/
【讨论】: