私は新しいので、私の上で簡単に行く:) 私の講師がしばらく前に言ったから、仮想テーブルの順序が重要です。 しかし私はその理由を理解していない!!次のコードを考える仮想テーブルの順序は重要ですか?
:
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()
しかし、それは重要である理由を私は理解していませんか?彼はそれが正確な順序ではない である場合、vtableは役に立たないと言った、あなたはなぜ説明できますか?
ありがとうございます!皆さんに! –
@Ron_s質問に答えた場合は、この回答の左上にあるチェックマークをクリックしてください。 –