我对向上转换有疑问。考虑有两个类,Class Parent 和 Class child。孩子与父母一起继承。
问题:
如果我为父对象创建对象指针,并分配子对象引用。我遵守了。输出是“对象切片”。无法访问子类特定组件
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() 的虚函数,那么它是可以访问的。有谁能说说是什么原因?