我是C ++的新手。我不知道为什么我们无法创建Derived Class Reference。在派生类中,base的所有功能都会在这种情况下得到,然后也是为什么......请帮我解释一下。如果这是重复的请与我分享确切的链接。
#include<iostream>
using namespace std;
struct A
{
virtual void get()
{
cout<<"I am in Base"<<endl;
}
};
struct B:A
{
virtual void get()
{
cout<<"I am in Derived"<<endl;
}
};
int main()
{
B*ptr = new A(); // virtual.cpp:21: error: invalid conversion from A* to B*
ptr->get();
return 0;
}
答案 0 :(得分:0)
B
源自A
,因此B
是 A
。但A
不是B
。A*ptr=new B;
,但不是你想要的。 B*ptr=new A;
是可能的。如果B
包含A
没有的数据成员,
将A
解释为B
毫无意义,尝试访问这些成员最多会导致崩溃。顺便说一下,这不是一个C ++教程网站。我建议你读一本初学者的书。