moa*_*ala 8 c++ coding-style namespaces
你会建议使用全局命名空间作为前缀::吗?(例如::std::cout代替std::cout)为什么?解析C++编译器的速度更快吗?
谢谢.
只有这样做才能消除歧义.
我有一段代码,这是必要的,因为我在一个X具有标准偏差函数的命名空间- std.每当我想访问std命名空间时,我都需要使用::std,否则编译器会认为我指的是所谓的函数.
具体例子:
namespace X {
double std(::std::vector<double> const& values) { … }
void foo(::std::vector<double> const& values) {
::std::cout << std(values) << ::std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
与解析速度无关。C++ 使用依赖于参数的名称查找 - Koenig Lookup,当您必须确保编译器使用全局根命名空间中的符号时,您可以在其前面加上::. 如果不这样做,编译器也可能在认为合适时使用其他命名空间中的函数定义(取决于查找方法)。
因此,除非必要,否则最好不要这样做。
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |