基本クラスオブジェクトへのポインターを派生クラスのポインターに変換することに混乱しています。次のコードを確認してください。
derivate_class *d1 = (derivate_class*)cb;
d1->print();
d1->print1();
結果は次のとおりです。
d1->print()
「I'm a virtual function in base.」と出力する理由を説明できる人はいますか?
#include <iostream>
using namespace std;
class base
{
public:
virtual void print()
{
cout << "I'm a virtual function in base." << endl;
}
};
class derivate_class : public base
{
public:
void print()
{
cout << "I rewrite the virtual function in base." << endl;
}
void print1()
{
cout << "I'm a function in derivate class." << endl;
}
};
int main()
{
base* b = new base();
derivate_class *d = new derivate_class();
b->print();
d->print1();
base* cb = b;
b = d;
b->print();
cout << "*********************" << endl;
derivate_class *d1 = (derivate_class*)cb;
d1->print();
d1->print1();
system("pause");
return 0;
}