文章目录
关键字
namespace
目的
解决名字冲突
基本知识
- 名字空间是一个人为定义的作用域
- 类也是一种名字空间
使用
定义
名字空间里可以定义变量、函数、类
可以名字空间里声明函数,名字空间外定义
可以合并声明
名字空间断开声明,会被合并
访问
namespaceName::变量名
std::cout << "hello world!" << std::endl;
std::cout << "123" << std::endl;
每个都要加,略显麻烦
using namespaceName::变量名
using std::cout;
using std::endl;
cout << "hello world!" << endl;
cout << "123" << endl;
把某个变量的访问权限对这个文件开放
个人比较喜欢这个写法
using namespace namespaceName
using namespace std;
cout << "hello world!" << endl;
cout << "123" << endl;
把名字空间内的所有内容对该文件开放访问权限
容易造成名字空间污染
别名
点样同距起花名呢?
namespace ns
{
//什么变量啊
//什么类啊
//什么函数啊
//什么嵌套的名字空间啊
}
namespace reference = ns;
int main()
{
reference::ns的内容;
}
嵌套
按照定义域正常访问就得啦,同域名甘,好易理解噶
namespace ns1
{
int a = 1;
namespace ns2
{
int a = 2;
}
}
int main()
{
cout << ns1::a << endl;//1
cout << ns1::ns2::a << endl;//2
}
嵌套类
- 被嵌套类基本上就是嵌套类外的东西了,对象空间不包含//就系冇么拉leng啰
- 但是被嵌套类可以无条件访问嵌套类的静态成员和类型名称(类)
意义
隐藏代码(商业意义)