-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