c++面向对象编程(五)--高级 命名空间

namespace即“命名空间”,也称“名称空间” 、”名字空间”

通过使用名空间(Namespaces)我们可以将一组全局范围有效的类、对象或函数组织到
一个名字下面。换种说法,就是它将全局范围分割成许多子域范围,每个子域范围叫
做一个名空间(namespaces),    将全局成员分割成许多子域范围


使用名空间的格式是:
namespace identifier
{

namespace-body
}
这里 identifier 是一个有效的标示符,namespace-body 是该名空间包含的一组类、对
象和函数。例如:
namespace general
{
int a, b;
}

在这个例子中,a 和 b 是名空间 general中的整型变量。要想在这个名空间外面访问
这两个变量,我们必须使用范围操作符::。例如,要想访问前面的两个变量,我们需要
这样写:
general::a
general::b
名空间(namespaces)的作用在于全局对象或函数很有可能重名而造成重复定义的错
误,名空间的使用可以避免这些错误的发生
。例如:


//namespaces
#include <iostream.h>
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
int main () {
cout << first::var << endl;
cout << second::var << endl;
return 0;

}

结果:
5
3.1416

在这个例子中,两个都叫做 var全局变量同时存在,一个在名空间 first 下面定义,另
一个在 second下面定义,由于我们使用了名空间,这里不会产生重复定义的错误

扫描二维码关注公众号,回复: 12348370 查看本文章

名空间的使用 (using namespace)
使用 using 指令后面跟 namespace 可以将当前的嵌套层与一个指定的名空间连在一
起,以便使该名空间下定义的对象和函数可以被访问,就好像它们是在全局范围内被
定义的一样。它的使用遵循以下原型定义:
using namespace identifier;

//using namespace example
#include <iostream.h>
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
int main () {
using namespace second;
cout << var << endl;
cout << (var*2) << endl;
return 0;
}

结果:

  3.1416

6.2832

在这个例子中的 main函数中可以看到,我们能够直接使用变量 var 而不用在前面加任
何范围操作符。
这里要注意,语句 using namespace 只在其被声明的语句块内有效(一个语句块指在一对花括号{}内的一组指令),如果 using namespace是在全局范围内被声明的,则在所有代码中都有效。



别名定义(alias definition)
我们以可以为已经存在的名空间定义别名,格式为:
namespace new_name = current_name ;


猜你喜欢

转载自blog.csdn.net/hgz_gs/article/details/51841882