:: 双冒号作用域运算符 与 namespace命名空间

using 声明

如下代码,会报错:

二义性:(就近原则,会使用定义的局部变量),不知道用声明的,还是用就近原则的局部变量

using 编译指令:

仅打开房间,编译成功,打印使用就近原则(就近原则,会使用定义的局部变量)(打开了房间,但没有说非要用,一种不好的用法,虽然可以编译通过(会使用就近原则))

打开多个房间时,也要避免二义性问题;不知道使用哪个房间的了;

:: 作用域运算符

using namespace std; //系统提供的

1.   全局作用域  直接加 ::   (eg:  定义局部变量a和全局变量a   在函数中cout<<::a<<endl;  则,调用的是全局变量a;否则使用就近原则,调用局部变量)

namespace命名空间,用来解决命名冲突的问题

1. 命令空间  , 可以放函数、变量、结构体、类

2. 命令空间  必须定义在全局作用域下

3. 命名空间可以嵌套命名空间

4.命令空间 是开放的,可以随时往原先的命名空间里面添加内容(定义多个同名的命名空间,会自动合并)

5. 无名、匿名命名空间(则,空间内的定义相当于 static,只能在当前文件内使用)

6.命令空间可以起别名

使用:

命名空间嵌套

4.命令空间 是开放的,可以随时往原先的命名空间里面添加内容(定义多个同名的命名空间,会自动合并)

发布了144 篇原创文章 · 获赞 58 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qqyuanhao163/article/details/99703544
今日推荐