我是新來的,所以我很容易:) 從我的講師早些時候講的話來看,虛擬表的順序很重要。 但我不明白這個原因!!?虛擬表的順序是否重要?
由於下面的代碼:
class A
{
public:
A() {cout <<"1" << endl;};
A (const A& s) {cout << "2" << endl;}
~A() {cout << "3" << endl;}
void f1() {cout << "4" << endl; f2();}
virtual void f2() = 0;
virtual void f3() {cout << "5" << endl;}
};
class B : public A
{
public:
B() {cout << "6" << endl;}
B(const B& b) : A(b) {cout << "7" << endl;}
~B() {cout << "8" << endl;}
virtual void f1() {cout<<"9"<<endl;}
void f2() {cout<<"lO"<<endl; f4();}
virtual void f2(int i) {cout << "11" << endl;}
virtual void f4() {cout << "12" << endl; f3();}
};
他說,順序是:
A's vtable :
A::f2()
A::f3()
B's vtable :
B::f2()
A::f3()
B::f1()
B::f2(int)
B::f4()
但我不明白爲什麼它是重要的?他說,如果這個虛擬表是 不是正確的順序,你能解釋一下爲什麼嗎?
非常感謝你!獻給你們所有人 ! –
@ Ron_s請確保您單擊此答案左上角的複選標記,如果它回答您的問題。 –