-4
我是C++中的新成员。我不知道为什么我们无法创建派生类参考。在派生类中,基本的所有特性都会在这种情况下得到解决,那么为什么......请帮助我确切的理由。如果这是重复的请与我分享确切的链接。为什么我们不在虚拟的情况下创建派生类参考
#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;
}
因为'A'不是'B'。 –
您不能进行隐式向下转换。假装一个'A'是一个'B'是一个坏主意。即使当'A'开始为'B'时也可以避免。 – chris
A * ptr = new B()可能是正确的。请你详细解释一下 – user2390140