pBase
からBase::g()
にアクセスするにはどうすればよいですか?C++でオーバーライドされた親仮想メソッドにアクセス
#include <iostream>
using namespace std;
class Base
{
public:
virtual void f(){ cout << "Base::f()" << endl; }
virtual void g(){ cout << "Base::g()" << endl; }
void h(){ cout << "Base::h()" << endl; }
};
class Derived : public Base
{
public:
void f(){ cout << "Derived::f()" << endl; }
virtual void g(){ cout << "Derived::g()" << endl; }
void h(){ cout << "Derived::h()" << endl; }
};
int main()
{
Base *pBase = new Derived;
pBase->f();
pBase->g();
pBase->h();
Derived *pDerived = new Derived;
pDerived->f();
pDerived->g();
pDerived->h();
return 0;
}
出力された(そしてまだそれが下の場合と同様に "pBase->g();
は" 仕事を得る):
Derived::f()
Derived::g()
Base::h()
Derived::f()
Derived::g()
Derived::h()
また、Derived::f()
はDerived::g()
とまったく同じですか? (すなわち。自動的にvirtual
として定義?)
あなたのコード(あなたが示すように)は 'f'関数を呼び出さないので、主張された出力はコードと一致しません。 –
が編集されました。ありがとう。 – nekonaute