也許我錯了,但這似乎是一個非常基本的問題。突然間,我的繼承鏈停止工作。編寫一個小的基本測試應用程序證明,這是我錯了(所以我不能責怪編譯器)。從構造函數調用虛擬函數
我有一個基類,在虛函數中有默認行爲。一個孩子課程從中衍生出來並改變行爲。
#include <iostream>
class Base
{
public:
Base() { print(); }
~Base() {}
protected:
virtual void print() { std::cout << "base\n"; }
};
class Child : public Base
{
public:
Child() {}
~Child() {}
protected:
virtual void print() { std::cout << "child\n"; }
};
int main()
{
Base b;
Child c;
}
此打印:
base
base
當創建一個子組實例,爲什麼基地::打印()叫什麼名字?我認爲通過使用virtual關鍵字,可以將該函數替換爲派生類。
我在什麼時候感到困惑?
可能重複的[C++虛函數從構造函數](http://stackoverflow.com/questions/496440/c-virtual-function-from-constructor) – Mark 2014-03-06 16:31:20