::范围解析运算符
- ::可以作为全局作用域符。用于类型名称前,如在程序中的某一处你想调用全局变量a,那么就写成::a;(也可以是全局函数)
- 类作用域符: 用于表示指定类型的作用域范围是具体某个类,如果想调用class A中的成员变量a,那么就写成A::a;
- 命名空间作用域符:用于表示指定类型的作用域范围是具体某个命名空间。如std::cout
namespace命名空间
介绍
命名空间是定义一种新的声明区域来创建命名的名称空间。
用途
这样目的之一是提供一个声明名称的区域,一个名称空间中的名称不会另一个名称空间的相同名称发生冲突,同时允许程序的其他部分使用该名称空间中的东西
使用using
using 声明 和 using 编译指令 using 声明使特定的标识符可用,using声明有限定的名称和关键字using组成,using std::cout; using 编译指令使整个名称空间可以用,using编译指令由名称空间名和它关键字 using namesapce 组成,using namespce std;
一般来说,使用using声明比使用using编译指令更安全,这是由于它只导入指定的名称,如果与局部名称发生冲突,编译器发出提示, 如果using编译指令导入所有名称,可能导入多个不用的名称,如果与局部发生冲突,那么局部名称就会覆盖了空间版本, 而且编译器不会发出警告,另外如果命名空间的开放性意味着名称空间的名称可能分散在多个地方,很难准确知道添加了哪些名称,尽量少用using 编译,多用using声明。