C++【リロード、上書き、隠しの3つの違い】
リロードとオーバーライド:メンバー関数がリロードされるフィーチャー:(1)同じ範囲(同じクラス内);(2)関数名は同じである.(3)パラメータが異なる;(4)virtualキーワードの有無.オーバーライドは、(1)派生クラスとベースクラスにそれぞれ位置する異なる範囲(派生クラスとベースクラスにそれぞれ位置する);(2)関数名は同じである.(3)パラメータが同じである.(4)ベースクラス関数にはvirtualキーワードが必要である.「非表示」は、(1)派生クラスの関数がベースクラスの関数と同じ名前であるが、パラメータが異なる場合、(2)派生クラスの関数がベースクラスの関数と同じ名前である場合、同じ名前のベースクラスの関数をマスクすることです.この場合、virtualキーワードの有無にかかわらず、ベースクラスの関数は非表示になります(リロードと混同しないように注意).(2)派生クラスの関数がベースクラスの関数と同名でパラメータも同じであるが,ベースクラスの関数にvirtualがない場合
キーワード.このとき、ベースクラスの関数は非表示になります(オーバーライドと混同しないように注意).
例:
キーワード.このとき、ベースクラスの関数は非表示になります(オーバーライドと混同しないように注意).
例:
class A {
public:
void foo (void) {
this -> bar ();
}
virtual void bar (void) {
cout << 'A' << endl;
}
};
class B : public A {
private:
void bar (void) {
cout << 'B' << endl;
}
};
int main (void) {
B b;
b.foo (); // B bar
}
class A {
public:
A (void) {
this -> bar ();
}
~A (void) {
this -> bar ();
}
virtual void bar (void) {
cout << 'A' << endl;
}
};
class B : public A {
private:
void bar (void) {
cout << 'B' << endl;
}
};
int main (void) {
B b; // 'A'
// bar , bar virtual ,
}