解决名字冲突的终极手段: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解除名字前缀。
(每次加一个前缀也挺麻烦的)