解决名字冲突的终极手段:namespace,名字空间
语法为:
namespace XXX
{
//把类和函数写在这个大括号里面
class YYY
{
};
}//<-这里不需要分号
使用namespace中的名字
加上一个名字前缀
XXX::YYY obj;
XXX::Test();
namespace XXX
{
void Test()
{
printf("hello,world!\n");
}
}
int main()
{
XXX::Test();
return 0;
}
解除前缀:using 关键字
如果觉得每次加上前缀麻烦,可以用using关键字来解除前缀(如果确定不会名字冲突,则可以这么做)
using namespace XXX;//使用XXX里面的所有名字
using XXX::YYY;//只使用XXX里面的一个名字YYY
在大型模块时可能用到namespace语法
一般情况下,在自己写项目代码的时候,不太可能需要使用namespace。。。
不过,在某些第三方库是有namespace的,因此我们在使用这些库的时候,要确定要不要用using解除名字前缀。
(每次加一个前缀也挺麻烦的)