我是新的,让我轻松:)
从我讲师在一段时间以前所说的,虚拟表的顺序很重要.
但我不明白的原因!
从我讲师在一段时间以前所说的,虚拟表的顺序很重要.
但我不明白的原因!
给定下一个代码:
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是没用的
不是按照正确的顺序,你能解释一下为什么吗?