と関数が定義されA
た基本クラスが与えられます。A::get
A::add
class A {
public:
int get() { return 3; }
int add() {
return get() + get();
}
};
A::add
を呼び出すことに注意してくださいA::get
。派生クラスB
が呼び出しA::add
て独自のB::get
関数を使用する方法はありますか? 何かのようなもの:
class B : public A {
int get() { return 7; }
};
#include <iostream>
int main() {
A foo;
std::cout << foo.add() << std::endl;
B bar;
std::cout << bar.add() << std::endl;
return 0;
}
期待される出力は、2 番目のケースではあり14
ません。6
を制御できれば、仮想関数をA
作成でき::get
、各派生クラスは必要に応じてそれを実装できます。ただし、それは不変であると仮定しA
ましょう - どうすれば正しい を呼び出すことができます::get
か?