在C++中通过命名空间来避免命名冲突

类似java中包的概念来解决函数名冲突问题

namespace MQ {     int g_variable;      class Person{      };      void test() {              }      }   int main(){      MQ::g_variable = 10;     MQ::Person *p = new MQ::Person();     MQ::test();     return 0; }  //如果不想写MQ::,可以在头使用命名空间,但是当using多个命名空间后,在使用的时候需要指定使用哪个命名空间 using namespace MQ; 

命名空间的嵌套

namespace MQ {     int g_variable;      class Person{      };      void test() {              }      namespace Other{         void test();     }      }   int main(){     //使用test     MQ::Other::test();     return 0; }  

命名空间的合并

namespace MQ {     void run(); }   namespace MQ {     int g_variable; }   //上面2个分开写和下面这样写没区别 namespace MQ {     int g_variable;     void run(); }