c++入門-namespace

3361 ワード

namespaceはC++の名前の競合を解決するために導入された.名前の衝突とは何ですか?たとえば、ファイルx.hにはクラスMyClassがあり、ファイルy.hにはクラスMyClassがあり、ファイルz.cppではx.hとy.hファイルを同時に参照します.明らかに、通常の方法ではだめですが、どうすればいいですか.namespaceを導入すればよい.例:
x.hの内容は
// x.h
namespace MyNamespace1
{
   class MyClass
   {
   public:
      void f();
   private:
      int m;
   }
};

y.hの内容は
// y.h
namespace MyNamespace2
{
   class MyClass
   {
   public:
      void f();
   private:
      int m;
   }
};

そしてz.cppにx.hとy.hを導入する
// z.cpp
#include"x.h"   
#include"y.h"   

void z::f()
{
   //      x.h  MyClass   x
   MyNamespace1::MyClass x;
    //      x.h  MyClass   x
   MyNamespace2::MyClass y;

   //    x.h    f
   x.f();
   //    y.h    f
   y.f();
}

名前空間は実質的に役割ドメインである.上の例で名前空間の役割がわかるでしょうhttps://blog.csdn.net/quyafeng2011/article/details/68921750