1. ホーム
  2. c++

[解決済み] C++: 名前空間 -- ヘッダファイルやソースファイルでの正しい使い方は?

2022-12-15 01:45:27

質問

2つのソースファイルの組を考えてみましょう。インターフェース宣言ファイル( *.h または *.hpp ) とその実装ファイル ( *.cpp ).

を、その *.h ファイルは次のようにします。

namespace MyNamespace {
  class MyClass {
  public:
    int foo();
  };
}

ソースファイルで名前空間を使用するための2つの異なるプラクティスを見たことがあります。

*.cpp は、プラクティス1を示しています。

#include "MyClass.h"
using namespace MyNamespace;

int MyClass::foo() { ... }

*.cpp 練習その2を示す。

#include "MyClass.h"
namespace MyNamespace {

  int MyClass::foo() { ... }

}

私の質問です。 この2つのやり方に違いはあるのでしょうか?

どのように解決するのですか?

コードの可読性の観点からは、この理由で#2の方法を使用する方が良いと私は考えています。

あなたは using という複数の名前空間を同時に記述することができ、その行以下に書かれたオブジェクトや関数は(名前の衝突を除けば)どの名前空間にも属すことができます。 ファイル全体を namespace ブロックで包むと、より明示的になり、.cpp ファイル内でその名前空間に属する新しい関数や変数を宣言することもできます。