C++命名空间
为什么使用命名空间
-
不同的头文件中可能用了相同的名字来定义类或函数,这样在程序中就会出现名字冲突
- 名字冲突就是在同一作用域中有两个或多个同名的实体
-
为了解决命名冲突
概念
- 一个可以由用户自己定义的作用域,在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区分它们
三种使用方式
using 编译指令
-
using namespace std
- 一次性将该空间中的所有实体全部引入,即使没有使用
作用域限定符,每次使用都用std::
- std::cout << “hello” << std::endl;
using声明机制
-
在开头位置加入
-
using std::cout
-
using std::endl
-
命名空间的定义
-
在全局位置定义
namespace wd { int add(int x, int y) { return x + y; } }
特殊的命名空间
匿名的命名空间,即不必特别声明的命名空间
-
例如c的库函数与自己定义的函数
-
为了兼容c语言而提出的
嵌套的命名空间
-
定义时
namespace wd { int number = 10; } namespace wh { int number = 100; void display() { cout << "wd::wh::display()" << endl; } }
-
使用时
void display(int number) { cout << "形参number = " << number << endl; cout << "wd命名空间中的number = " << wd::number << endl; cout << "wh命名空间中的number = " << wd::wh::number << endl; }