尽量使用using声明而不是using编译指令
[[Cpp]] 中给出了 using
声明和 using
编译指令来简化命名空间中对名称的使用。using
声明使特定的标识符可用,using
编译指令使整个名称空间可用。
一般来说,使用 using
声明比使用 using
编译指令更安全,这是由于它只导入指定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using
编译指令导入所有名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。[1]
using
声明的示意
namespace Jill {
double bucket(double n) { ... }
double fetch;
struct Hill { ... };
}
char fetch;
int main() {
using Jill::fetch; // put fetch into local namespace
double fetch; // Error! Already have a local fetch
std::cin >> fetch; // read a value into Jill::fetch
std::cin >> ::fetch; // read a value into global fetch
...
}
上例中的 using Jill::fetch
在函数内部进行了 using
声明,那么在 main
函数中,fetch
就代表了 Jill::fetch
。
Reference
[[C++ Primer Plus(第6版)中文版]] Chap. 9 ↩︎
时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下
作者: pomolnc
出处: https://www.cnblogs.com/pomolnc/p/17760468.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
若内容有侵犯您权益的地方,请公告栏处联系本人,本人定积极配合处理解决。