命名空间
- 解决全局变量冲突
- 命名空间可以扩展
- 命名空间可以多层嵌套
- 命名空间不存在私有
- 命名空间内层变量覆盖外层变量
- 匿名空间等同于全局变量
- 给命名空间起别名
使用命名空间
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
std::cout << "hello c++" << std::endl;
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;
cout << ::sum << endl;
cout << sum << endl;
cout << test::sum << endl;
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;
int main(int argc, char* argv[])
{
cout << my::sum << endl;
cin.get();
return 0;
}