c++命名空间
命名空间
- 解决全局变量冲突
- 命名空间可以扩展
- 命名空间可以多层嵌套
- 命名空间不存在私有
- 命名空间内层变量覆盖外层变量
- 匿名空间等同于全局变量
- 给命名空间起别名
使用命名空间
#include <iostream>
using namespace std; //引用叫std命名空间
int main(int argc, char* argv[])
{
//:: 作用于操作符
//使用命名空间 命名空间名称后跟作用域操作
std::cout << "hello c++" << std::endl; //使用标准库cout进行输出打印
return 0;
}
命名空间解决全局变量冲突
#include <iostream>
using namespace std;
int sum = 200; //全局变量
namespace test
{
int sum = 100;
}
int main(int argc, char* argv[])
{
std::cout << ::sum << std::endl; //输出全局变量sum
cout << ::sum << endl; //上一行的简化写法
cout << sum << endl; //同上两行一样
cout << test::sum << endl; //输出test命名空间下的变量sum
cin.get(); //等待输入
return 0;
}
命名空间可以扩展
#include <iostream>
using namespace std;
namespace exstion1
{
int data = 100;
}
namespace exstion1
{
int num = 100;
}
//定义两个相同名字的命名空间,编译时会进行合并
int main(int argc, char* argv[])
{
cout << exstion1::data << endl;
cout << exstion1::num << endl;
cin.get();
}
命名空间多层嵌套
#include <iostream>
using namespace std;
//命名空间嵌套
namespace partenNode
{
namespace childNode
{
int num = 100;
}
}
int main(int argc, char* argv[])
{
cout << partenNode::childNode::num << endl; //使用多层嵌套命名空间
cin.get();
return 0;
}
命名空间内层覆盖外层变量
#include <iostream>
using namespace std;
namespace externNameSpace
{
int sum = 100;
namespace insideNameSpace
{
int sum = 200;
}
}
int main(int argc, char* argv[])
{
cout << externNameSpace::insideNameSpace::sum << endl;
cin.get();
return 0;
}
匿名空间等同于全局变量
#include <iostream>
using namespace std;
//匿名命名空间
namespace
{
int sum = 100;
}
int main(int argc, char* argv[])
{
cout << sum << endl;
cin.get();
return 0;
}
给自定义命名空间起别名
#include <iostream>
using namespace std;
namespace myNameSpace
{
int sum = 100;
}
namespace my = myNameSpace; //给myNameSpace改一个别名为my
int main(int argc, char* argv[])
{
cout << my::sum << endl;
cin.get();
return 0;
}
秋风
2018-03-11