C++におけるusingの意味は何ですか?
C++では、usingキーワードには2つの異なる用法と意味があります。
- 別名を宣言するために使用される
- 既存の型や名前空間に新しい別名を付ける場合、usingキーワードを使用することができます。例えば、
using MyInt = int;
using namespace std;上記のコードでは、using MyInt = int はint型をMyIntとして再命名し、using namespace std はstdという名前空間を現在のスコープに導入し、その定義を直接使用することが可能になり、名前空間の接頭辞を付ける必要はありません。 - 基底クラスのメンバー関数を導入するために使用されます。
- 派生クラスが基底クラスを継承する際、派生クラスで基底クラスの特定のメンバー関数を直接使用したい場合、usingキーワードを使用することができます。例えば:
class Base {
public:
void print() {
cout << “Base class” << endl;
}
};class Derived : public Base {
public:
using Base::print;
};int main() {
Derived d;
d.print(); // 基底クラスのprint()関数を直接呼び出す
return 0;
}上記のコードでは、using Base::print;によって基底クラスBaseのprint()関数が派生クラスDerivedに導入され、Derivedクラスでprint()関数を直接呼び出すことが可能となります。新しい関数を再定義する必要はありません。
「C++11以前の標準では、usingキーワードは基底クラスのメンバ関数を導入するためにしか使用されませんでしたが、C++11標準では、型の別名を宣言するためにusingエイリアスも導入されました。」