您的位置:首页 > 编程语言 > C语言/C++

<C++>2.命名空间

2017-10-02 00:15 337 查看

2、命名空间

一、命名空间的作用

一个软件通常是由多个开发人员合作完成,难免会产生命名重复的问题。
命名空间帮助开发人员在开发新的软件组件或模块时不会与已有软件组件或者模块产生标识命令冲突,从而解决了程序中同名表示符存在的潜藏危机。

二、命名空间的定义

namespace 命名空间标识符
{

成员的声明;// 例如类、对象、函数、变量以及结构体等。

}

例:

namespace WSG
{
int a;
void func();

struct student
{
int age;
char *name;
};
}


注意:与类不同,命名空间完后不需要加分号“;”。

三、命名空间的使用

1、直接指定标识符

命名空间表示符名::成员名
例:
namespace num
{
int x = 20;
int y = 20;
}
cout<<num::a<<endl;


2、使用using namespace 命令:可以引用命名空间中的所有成员。

例:

#include <iostream>

using namespace std;

namespace num
{
int x = 20;
int y = 20;
}

using namespace num;

int main(void)
{

cout<<x<<endl;
cout<<y<<endl;

return 0;
}


注意:当使用using namespace同时声明两个以上命名空间时,且这些命名空间内有同名变量,对同名变量的调用需要使用“命名空间::”进行限定。没有冲突的成员可以直接使用。 

3、使用using 关键词声明

一个using每次只能引用单个成员。
例:

namespace Test
{
void print(){cout<<"hello"}
}
using Test::print();


建议使用第1种方法,不容易出错。


四、说明

1、命名空间标识符名所在定义域中是唯一的。

2、命名空间作用域不能以分号结束。

3、命名空间可以在全局作用域或其它作用域内部定义,但不能在函数内部或者类内部定义。

4、命名空间和类、结构体类似,但不能实例化,只能引用。

5、命名空间的成员都是公有的,不能对其进行私有化。

6、命名空间可以嵌套使用。这种情况下,调用成员需要加上所有的命名空间标识符名。如:cout<<A::B::x<<endl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: