??????????????治??????????????????????????????????????????????~

????????

??????????????????壬??????virtual?????ε????????????????????????????????????????????????????????壬????????????????????β?????????????????Ч????

?????????C++??????????????????????????????????????????????????????????????????????е?????????????磺?麯??????????????????????????????????????????????????????????????????????????????????????ж?λ???????????????????????????й?????????????????????????????

?????????麯?????????????????????????????????????????????????????????????????????????????????????????????????????麯??????????????????????

???????????ж?????????????????????????????????????????????????????????????????????????????????????????????????????????????л??????????????????????????????????б??????????????????????

???????

??????????????????????????庬?壬?????????????????????????????????????C++?ж????????????????????????????????????????????????μ????????

????3.1 ????

?????????????????б???????????????????????????????????????????????????????????????????????????????λ???????м?β??????????????????????в??????VC8???????????????????λ?????????????????????????????β????

????3.2 ???

????????????????????????????????????????????????????????????????????????????????????????Σ????????????????????????????????????????ú????????????????????VC8?????????з????????????????vbc???????????麯?????е????slot????slot?д???????????????????????????????????????????int???????????????????????????????????????????????????????????????????????麯?????????????????????????????????????int????????

????3.3 ????

?????????????????????????н????????????????????????????????????????????????????ù???????????????????????????????????Щ?????

??????飺?????????????????????????????У?????????????8??????????4???????????????????麯?????????4??????????????б??

class Base1 {
private:
 int base1;
public:
 virtual void f() { cout << "Base1::f" << endl; }
 virtual void g() { cout << "Base1::g" << endl; }
 virtual void h() { cout << "Base1::h" << endl; }
};
class Base2 {
private:
 int base2;
public:
 virtual void f() { cout << "Base2::f" << endl; }
 virtual void g() { cout << "Base2::g" << endl; }
 virtual void h() { cout << "Base2::h" << endl; }
};
class Base3 {
private:
 int base3;
public:
 virtual void f() { cout << "Base3::f" << endl; }
 virtual void g() { cout << "Base3::g" << endl; }
 virtual void h() { cout << "Base3::h" << endl; }
};
class Derive : public virtual Base1?? public virtual Base2?? public virtual Base3 {
private:
 int derive;
public:
 virtual void f() { cout << "Derive::f" << endl; }
 virtual void g1() { cout << "Derive::g1" << endl; }
};
int main()
{
 Derive d;
 cout<<sizeof(d)<<endl;
 return 0;
}