C++命名空间

C++命名空间教程

C++ 中的命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。

命名空间是 ANSI C++ 引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。

C++命名空间详解

语法

namespace namespaceName

参数

参数 描述
namespace 定义命名空间使用的关键字。
namespaceName 命名空间的名称。

说明

我们使用了 namespace 定义了一个命名空间 namespaceName。

访问命名空间成员详解

语法

namespaceName::member;

参数

参数 描述
namespaceName 要访问成员的命名空间的名称。
member 要访问的成员。

说明

我们使用 namespaceName 后面加上 :: 的形式,访问命名空间的成员。

案例

C++命名空间定义

定义 C++ 命名空间,区分作用域

#include <iostream> using namespace std; int MAX_NUM = 10; int MAX_NUM = 20; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; cout << "MaxNum = " << MAX_NUM << endl; return 0; }

程序运行后,控制台输出如下:

18_C命名空间定义.png

我们看到,我们定义了两个 int 类型变量,并且,这两个变量名都是 MAX_NUM,因此,我们编译程序,程序报错,即变量被重新定义了, 现在,我们修改程序如下:

#include <iostream> using namespace std; namespace MAX1 { int MAX_NUM = 10; } namespace MAX2 { int MAX_NUM = 20; } int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; cout << "Max1::MaxNum = " << MAX1::MAX_NUM << endl; cout << "Max2::MaxNum = " << MAX2::MAX_NUM << endl; return 0; }

程序运行后,控制台输出如下:

19_C命名空间定义.png

这次,我们定义了两个命令空间,MAX1 和 MAX2,并分别将两个变量放在了不同的命名空间中,这次,我们可以看到,我们的程序可以正常运行了,这是因为我们使用了命名空间区分了两个变量的作用域。

最后,我们在 main 函数中,使用了 MAX1::MAX2:: 的形式来访问了命名空间中的变量。

C++命名空间总结

命名空间是 ANSI C++ 引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。