有没有一种方法可以不使用命名空间中的项目?

6

我了解到,打字

using namespace std;

在程序开头使用"import *"是一种不好的习惯,因为它会将命名空间中的所有函数都导入进来。这可能会导致名称冲突而引发错误。
我的问题是,是否存在一种方法可以指定你不想使用哪些命名空间中的函数呢?是否有某种语句,比如说:
not_using std::cin;

可以完成这个任务的吗?
3个回答

12

你不能这样做(将所有内容包含,然后有选择地排除某些内容)。

你的选择是:

1)始终显式限定名称。例如:std::vector<int> v;

2)使用using namespace std;引入所有名称。

3)仅使用using std::vector;引入所需名称,然后执行vector<int> v; - 其他名称不会被引入。

注意: using namespace std;不必放在全局范围内并污染整个文件。如果你想的话,可以在函数内部进行操作:

void f() {
    using namespace std;
    // More code
}

这样,只有 f() 将其本地作用域中的所有名称都引入。对于 using std::vector; 等也是如此。


2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接