???????????????????????????????????????а?&b???int *??????麯?????????????????????????????麯????????????Base::f()???????????????е???????????int* ?????????????????????????????????????????????Base::g()??Base::h()??????????£?
????(Fun)*((int*)*(int*)(&b)+0); // Base::f()
????(Fun)*((int*)*(int*)(&b)+1); // Base::g()
????(Fun)*((int*)*(int*)(&b)+2); // Base::h()
??????????????????ɡ??????????е??Ρ????????????????????????????????????????????????????
??????????????????У??????麯?????????????????????麯?????????????????????????“/0”????????????麯?????????????????????????????????????????????WinXP+VS2003?£???????NULL??????Ubuntu 7.10 +Linux 2.6.22 + GCC 4.1.3?£??????????1???????????????麯???????????0????????????麯?????
???????棬?????????“?????”??“?и???”????麯????????????и????????麯???????????????????????????и??????????????????????????????????£?????????????????????????????????
????????У????麯???????
???????棬?????????????????????麯?????????????????????????????????й????
????????????????й???У?????????????κθ???????????????????????????У????麯?????????????
?????????????Derive d; ???麯???????£?
?????????????????漸??
????1???麯????????????????????С?
????2????????麯??????????麯????檔
????????????????????????ο????????????????д??γ??????????
????????У????麯???????
?????????????麯?????????????飬??????麯????ú??????塣???棬??????????£?????????????麯?????????????麯?????????????????????裬?????????????????????й????
??????????????????й????Ч????????????????У???????????????????????f()??????????????????????????麯????????????????????
???????????п?????????漸??
????1???????f()????????????????????????麯????λ?á?
????2????б????????????ɡ?
?????????????????????????????????????
????Base *b = new Derive();
????b->f();
??????b?????????е??麯?????f()??λ???????Derive::f()?????????????????????????÷????????Derive::f()????????????????????
?????????У????麯???????
???????棬?????????????????????е???????????????????????????й?????????????и????????????
????????????????е??麯???????????????????
????????????????
????1????????????????????
????2???????????????????????????????С?????ν?????????????????????????ж???
????????????????????????????????????????????????????????????????????
?????????У????麯???????
??????????????????????????????麯????????????
????????У????????????и?????????f()??????
?????????????????????е??麯????????
?????????????????????????麯?????е?f()??λ????滻??????????????????????????????????????????????????????????????f()????磺
????Derive d;
????Base1 *b1 = &d;
????Base2 *b2 = &d;
????Base3 *b3 = &d;
????b1->f(); //Derive::f()
????b2->f(); //Derive::f()
????b3->f(); //Derive::f()
????b1->g(); //Base1::g()
????b2->g(); //Base2::g()
????b3->g(); //Base3::g()
?????????
???????дC++?????£???????????????C++???????????????????????????????????????麯??????????????μ?????????????????????????棬??????????????????????麯??????????????°ɡ?
?????????????????????????????????麯??
?????????????????????????????麯???????????????????顣??????????????????????????????????????????????Base1?????????Derive???麯??????????????????????????????????????????????麯????
????Base1 *b1 = new Derive();
????b1->f1(); //???????
?????κ???????????????????????е?δ??????????????????????????????????????????????????????????????????????????????????????????????????麯????????Υ??C++??????????????????????????????????渽????????????????????????
????????????non-public???麯??
?????????????????麯????private????protected???????Щ??public???麯?????????????麯?????У???????????????????÷????麯???????????????Щnon-public???麯????????????????????
?????磺
????class Base {
????private:
????virtualvoid f() { cout << "Base::f" << endl; }
????};
????class Derive : public Base{
????};
????typedefvoid(*Fun)(void);
????void main() {
????Derive d;
????Fun pFun = (Fun)*((int*)*(int*)(&d)+0);
????pFun();
????}
?????????????????????????麯???
????Base *pb;
????inherit c;//inherit???? Base??
????pb=&c;
????delete   pb;?????????????????????????????????????virtual????????pb?????????????????????????????????ü???????????????????????????????????????????????????й????????????????virtual????????pb????????????????????????????????????????????????????????????????????????????????ü??????????????????????????