标签:另一个 需要 替代 影响 ali 相同 包含 解决 编译器
新的名称空间特性
名称空间作用:
c++新增了一种功能,即通过定义一种新的声明区域来创建命名的名称空间,这样做的目的之一是提供一个声明名称的区域。一个名称空间中的名称不会与另外一个名称相同名称发生冲突,同时允许程序的其他部分使用该名称声明的东西。
创建名称空间关键字namespace,语法格式如下:
namespace name {
int value;
void func();
}
名称空间是开放的,可以把名称加入到已有的名称空间中。语法格式如下:
namespace name {
double value2;
}
为名称空间中的函数原型提供定义的语法格式如下:如下:如下(可在 该文件后面或另一个文件中提供定义):
namespace name {
void func() {
....
}
}
访问名称空间:未被装饰的名称称为未限定的名称;包含名称空间的名称称为限定的名称。
使用解析运算符访问名称:
name::value = 100;
使用using声明和using编译指令简化对名称空间的访问:
using name::value;
using namespace name;
如果名称空间和声明区域定义了相同的名称,则不能用using声明导入名称空间,这样会导致名称冲突,编译器不允许这样做。但可以用using编译指令导入名称空间,此时只是局部名称隐藏了名称空间名,用域解析运算符就可以访问了。
using声明比using编译指令更安全,因为如果有名称与局部名称发生冲突,编译器会发出指示,而后者不会发出警告。
名称空间嵌套
namespace name1 {
namespace name2 {
int value2;
}
int value1;
}
访问value2的方法:
using name1::name2::value2;
value2 = 100;
using namespace name1::name2;
value2 = 100;
using namespace name1;
name2::value2 = 100;
未命名的名称空间:可以通过省略名称空间的名称来创建未命令的名称空间。就像后面跟着using编译指令一样,也就是说,在该名称空间中声明的名称的潜在作用域为:从声明点开始到该声明区域的末尾。不能在未命名名称空间所属文件之外使用名称空间中的名称,即提供了链接性为内部的静态变量的替代品。
3.名称空间的使用理念
标签:另一个 需要 替代 影响 ali 相同 包含 解决 编译器
原文地址:https://www.cnblogs.com/linuxcoffe/p/8906514.html