名前

名前空間 の C++

3個の演習

名前空間について

コードを整理するための重要な仕組みのひとつが、名前空間です。2つの関数で名前が衝突することがありますが、それぞれを別の名前空間に置けば解決できます。名前空間は入れ子にすることもでき、大きなコードベースを構造化するのに役立ちます。名前空間へのアクセスには、スコープ解決演算子::を使います。

次の例では、2つの異なるfoo関数を使っています。それぞれの名前空間を先頭に付けることで、両方を一緒に使えます。

namespace my_ns {
    int foo() {
        return 44;
    }
    namespace my_inner_ns {
        int baz() {
            return 90;
        }
    }
}
namespace my_other_ns {
    int foo() {
        return -2;
    }
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
Advanced

名前空間の入れ子が深くなると、記述が冗長になりすぎることがあります。usingで名前空間をインポートすれば、その冗長さを取り除けます。これは、すべての名前をグローバル名前空間に移します。区別を保つには、エイリアスが役立つでしょう。

int my_other_result{my_ns::my_inner_ns::baz()};

using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};

namespace m = my_ns; // setting an alias
namespace o = my_other_ns;

int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

名前空間を学習する