关于using声明与using指令 c++
来源:互联网 发布:西门子plc怎么编程 编辑:程序博客网 时间:2024/05/17 08:14
using std::cin; 这就是一个using声明,就像一个普通的声明。以后提到cin时就指的是std里面的。
using namespace std;这就是一个using指令,导入所有std里面的应用。
除此之外,还需注意:(以下引自http://topic.csdn.net/u/20090416/22/9b01fda8-49a5-4ac4-bc88-28f990b4212a.html)
“一般来说,使用using声明会更安全。因为,using声明只导入指定的名称,如果该名称与局部名称发生冲突,编译器会报错。而using指令导入整个命名空间中的所有成员的名称,包括那些可能根本用不到的名称,如果其中有名称与局部名称发生冲突,则编译器并不会发出任何警告信息,而只是用局部名去自动覆盖命名空间中的同名成员。特别是命名空间的开放性,使得一个命名空间的成员,可能分散在多个地方,程序员难以准确知道,别人到底为该命名空间添加了哪些名称。”
理解为:使用using指令时,如果代码块中有重名的变量,则会用局部变量名覆盖命名空间中的同名成员,而不会报错。
使用using声明时,遇到上述情况,编译器会报错。
重名的变量将使程序员很难区分,引起歧义。故,使用using声明是个不错的方法,况且它仅仅导入需要的成员,必然占用资源较少。
示例1:
- C/C++ code
- namespace myname
- { int n = 7; }
-
- int main()
- {
- using myname::n;
- int n = 5; return 0; }
编译出现错误:error C2374: “myname::n”: 重定义;多次初始化
符合这句话:“using声明只导入指定的名称,如果该名称与局部名称发生冲突,编译器会报错。”
示例2:
- C/C++ code
- namespace myname
- { int n = 7; }
- int main()
- {
- using namespace myname;
- int n = 5;
- return 0;
- }
编译正确。
符合这句话:
“而using指令导入整个命名空间中的所有成员的名称,包括那些可能根本用不到的名称,如果其中有名称与局部名称发生冲突,则编译器并不会发出任何警告信息,而只是用局部名去自动覆盖命名空间中的同名成员。”
- 关于using声明与using指令 c++
- using声明与using指令
- 关于using声明与using编译指令 c++
- C++_命名空间namespace 与 using编译指令 与 using声明使用。
- using指令和using声明的区别
- using声明和using编译指令
- using声明 和 using编译指令 比较
- using声明和using编译指令
- 立此存照(18)[C++]using声明与using指示的区别
- C#using别名指令
- 关于using声明和using指示符
- C++using声明和using指示
- Using声明和指令的工作原理
- Using声明和指令的工作原理
- Using声明和指令的工作原理
- using声明
- using声明
- using声明
- WebDriver工厂类封装
- hdu2665
- Map集合视频学习
- Pb技巧1
- QT 编写Rtf(富文本格式) 文件实例
- 关于using声明与using指令 c++
- Mybatis/Ibatis,数据库操作的返回值
- VMware中的suse linux安装VMtools方法
- web规范标准
- spring2.5.6的‘annotation-config’ and its parser class are only available on JDK 1.5 and higher错误解决
- 51nod1175
- 华为机试——约瑟夫环问题(总结)
- 192,自定义代理delegate
- cocos2d-x 减少编译时间/免除重复编译