C++でキーワードをオーバーライドする
関数のオーバーライドは、C++の最も一般的な機能です。基本的に、関数のオーバーライドとは、基本クラスに存在し、派生クラスでも定義されている関数を再定義することを意味します。したがって、関数のシグネチャは同じですが、動作は異なります。
ただし、プログラマーがその関数をオーバーライドしているときに間違える場合があります。シグニチャが同じでない場合と同様に、それは別の関数として扱われますが、オーバーライドされたメソッドなどは扱われません。その場合、overrideキーワードを使用できます。このキーワードはC++11で導入されました。コンパイラがこの種のキーワードを見つけると、これが同じクラスのオーバーライドされたバージョンであることがわかります。
概念を理解するために例を見てみましょう。
例
#include <iostream>
using namespace std;
class BaseClass{
public:
virtual void display() {
cout << "Displaying from Base Class\n";
}
};
class DerivedClass : public BaseClass{
public:
void display() {
cout << "Displaying from Derived Class\n";
}
};
main() {
BaseClass *b_ptr;
b_ptr = new DerivedClass();
b_ptr->display();
} 出力
Displaying from Derived Class
この場合、署名は同じであるため、プログラムは正常に機能しています。次の例では、署名が異なります。 overrideキーワードの場合、エラーが生成されます。
例
#include <iostream>
using namespace std;
class BaseClass{
public:
virtual void display() {
cout << "Displaying from Base Class\n";
}
};
class DerivedClass : public BaseClass{
public:
void display(int x) override{
cout << "Displaying from Derived Class\n";
}
};
main() {
BaseClass *b_ptr;
b_ptr = new DerivedClass();
b_ptr->display();
} 出力
[Error] 'void DerivedClass::display(int)' marked override, but does not override
この場合、署名は同じであるため、プログラムは正常に機能しています。次の例では、署名が異なります。 overrideキーワードの場合、エラーが発生します。
-
C++での多重継承
多重継承は、クラスが複数の基本クラスから継承する場合に発生します。したがって、クラスは、多重継承を使用して複数の基本クラスから機能を継承できます。これは、C++などのオブジェクト指向プログラミング言語の重要な機能です。 多重継承を示す図を以下に示します- C++で多重継承を実装するプログラムは次のとおりです- 例 #include <iostream> using namespace std; class A { public: int a = 5; A() { &
-
C#の静的キーワード
staticキーワードを使用して、クラスメンバーを静的として定義できます。クラスのメンバーを静的として宣言すると、クラスのオブジェクトがいくつ作成されても、静的メンバーのコピーは1つだけになります。 キーワードstaticは、クラスにメンバーのインスタンスが1つだけ存在することを意味します。静的変数は、インスタンスを作成せずにクラスを呼び出すことで値を取得できるため、定数の定義に使用されます。 以下は、静的変数の使用法を示す例です- 例 using System; namespace StaticVarApplication { class StaticVar