基于此,以下代碼應該列印“運行派生方法”,但是當我運行它時,它會列印“運行基本方法”:
#include <iostream>
using namespace std;
class Base
{
public:
Base() {}
virtual void run() {cout << "Running base method" << endl;}
virtual ~Base() {}
};
class Derived : public Base
{
public:
Derived() {}
void run() {cout << "Running derived method" << endl;}
~Derived() {}
};
int main()
{
Base o = Derived();
o.run();
return 0;
}
uj5u.com熱心網友回復:
評論中有答案,但我必須將其作為答案發布以關閉它。在閱讀它之前,我通過將示例代碼與我的代碼進行比較來發現它自己,但評論很有幫助,因為我現在知道它被稱為物件切片。當我將值分配給具有基本型別的變數或欄位時,它會忘記原始型別,為了使其正常作業,我必須使用指標
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/519729.html
標籤:C 遗产
上一篇:C 將孩子作為父母傳遞給函式
