1、对C++命名空间的理解
以主函数调用cout为例,使用using namespace std的作用是为了调用cout时,区分此处的cout是<iostream>下命名空间std下的cout。具体理解下图辅助。
2、定义命名空间
#include <iostream>
using namespace std;
//1、定义命名空间
namespace spaceA{//spaceA为域名空间名
int g_a = 10;
}//切记此处没有‘;’
int main()
{
//cout << g_a << end;此处会报错
//正确调用方法(此为直接调用方式)
//第一种方式
using namespace spaceA;
cout << g_a << endl;
//第二种方式
cout << spaceA::g_a << endl;
//第三种方式
using spaceA::g_a;
cout << g_a << endl;
return 0;
}
3、命名空间的嵌套
#include <iostream>
using namespace std;
//定义命名空间
namespace spaceB {
int a = 20;
namespace spaceC {
struct student
{
int id;
char name[20];
};
}
using namespace spaceB::spaceC;//为namespace嵌套第3种方法添加(不常用
}
int main()
{
//namespace嵌套
//方式1
/*
using namespace spaceB::spaceC;
struct student s1;
s1.id = 10;
*/
//方式2
spaceB::spaceC::student s1;
s1.id = 10;
cout << s1.id << endl;
//方式3//嵌套
/*using namespace spaceB;
struct student s1;
s1.id = 10;
*/
return 0;
}
总结:
- 当使用<iostream>的时候,该文件没用定义全局命名空间,必须使用namespace std;这样才能正确使用cout。若不引用using namespace std,需要这样做。
- C++命名标准为了和C区别开,也为了正确使用命名空间,规定有文件不适用后缀.h
- C++命名空间的定义:namespace name[…]
- Using namespace NameSpaceA;
- namespace定义可以嵌套