C++ 命名空间,作用域运算符和using关键字
个人理解,极其主观,仅供参考!
C++ 作用域运算符
C++的作用域运算符主要起到区别作用,避免产生二义性,在不同的模块可能有相同的标识符名称,需要用::加以区分。
主要用于:
- 命名空间
- 全局变量
- 类(static情况,继承情况)
见文章:C++作用域运算符::的用法 (360doc.com)
C++ 命名空间
使用命名空间实际上也是避免不同的空间内的标识符相同导致二义性,可以通过使用作用域运算符确定此标识符处于什么空间,也可以使用using namesapce s_name 声明以下的语句都处于s_name的作用域中。
作用域可以嵌套,可以在一个作用域里定义另一个作用域。
注意namespace内的变量是静态生命周期。
namespace Hs
{
int i = 10;
int j = 25;
namespace HD
{
int k = 13;
}
}
void testNS()
{
using namespace Hs;
cout << &HD::k << endl;
}
输出:
00A81050
定义了命名空间,实际上就分配内存了。
注意只能在全局作用域定义命名空间。
C++ using
using 是C++的一个关键字,主要用在以下地方:
命名空间
可以通过 using namesapce s_name 表明作用域内的代码中的标识符在s_name命名空间。
那么作用域怎么定呢?
namespace HU
{
int i = 5;
int j = 15;
}
namespace Hs