アップキャストについて疑問があります。Class Parent と Class child という 2 つのクラスがあるとします。子は親から継承されました。
質問:
親のオブジェクト ポインターを作成し、子オブジェクト参照を割り当てた場合。遵守しました。出力は「オブジェクトのスライス」です。子クラス固有のコンポーネントにアクセスできませんでした
class Parent
{
public:
int i;
void school()
{
std::cout<<"Parent Class::School()"<<std::endl;
}
// virtual goToPlay()
// {
// std::cout<<"Parent Class::goToPlay()"<<std::endl;
// }
};
class Child:public Parent
{
public:
int j;
void goToPlay()
{
std::cout<<"Child Class::goToPlay()"<<std::endl;
}
};
int main()
{
Parent *mParent;
Child mChild;
mParent = &mChild;
mParent->school();
mParent->goToPlay(); //Error
goToPlay() API にアクセスできませんでした。親クラスで goToPlay() の仮想関数を作成すると、アクセス可能になります。誰でもその理由を教えてもらえますか?