首先,我们来了解一下命名空间。
命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分隔开来。
命名空间的形式
- 匿名命名空间
- 有名称命名空间
在C++中,使用namespace关键字定义一个命名空间,使用using namespace来使用命名空间。在一个命名空间里面可以嵌套其它的命名空间。
有名称额命名空间
//自定义命名空间
namespace myspace {
/**
*其它的代码
·变量(可以带有初始化);
·常量;
·数(可以是定义或声明);
·结构体;
·类;
·模板;
·命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。
*/
//嵌套命名空间
namespace child{
/**
*其它的代码
*/
}
}
//使用命名空间,使用命名空间语句一定要在命名空间之后
using namespace myspace;
//为命名空间取别名
namespace my=myspace;
/**1 使用myspace命名空间里面变量或者方法可以使用my::变量(方法),使用嵌套的命名空间my::child::变量(方法)
2 命名空间里面的所有变量和方法都是公有的,不能写成私有。命名空间的作用域开始于using namespace 名称;,到程序代码结束
3 命名空间如果在一个{}里面声明使用,则作用于就是{}里面
4 如果命名空间同名了,那么就会相当于拓展命名空间,相同的变量和方法就会覆盖掉,最新的起作用
*/
匿名命名空间
//没有命名的命名空间可以直接调用
namespace
{
int a(3);
void print()
{
std::cout << "gogogo";
}
}
void main3()
{
std::cout << a;
print();
}
在使用命名空间的时候,注意不要再命名空间里面定义方法,而是使用函数指针接口,这样有利于程序迭代开发。
namespace withFunctuion
{
int(*madd)(int, int);//函数指针接口
}
int add2(int a, int b)
{
return a + b;
}
int add1(int a, int b)
{
std::cout << a << b;
return a + b;
}