?????????????C?е?func???????壬??????????
1 class C : public A
2 {
3 };
4
5 pa->func();      //A::func() ????????
6 pc->func();      //A::func() pc????C???????func????壬???????????????
7 pnull->func();   //A::func() ????????????
????????A?е?void func()???????virtual???????????????
1 class A
2 {
3 public:
4     virtual void func(){ std::cout << "A::func() "; }
5 };
6
7 pa->func();      //B::func() ???????virtual?麯???????pa???????????B*?????????B?в????????????????
8 pc->func();      //C::func() pc???????????????C*????????????C?в????
9 pnull->func();   //??????????????func??virtual??????????func???????????????????????????????pnull??????
??????????
????????????????У?
????1. ???????A?е?func????virtual?????????????pa??pb??pc???????????????func?????????????pa??pb??pc???????????????????????????????
???????????????????????no-virtual???????????????????????????????鰡????????????????????????
????2. ???func???麯?????????е?????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????á?
??????????????????????????????
????1. ???????????????????????????????????
????2. ????????????????????????????????????
????3. ???????????????????????
????4. ?????????????麯???????????????????????????????
???????飺
???????????????ж????????(non-virtual)????????Effective C++ ?????桷????36??????????????o????????????????????????????????????????????????????ж????????????????2?????????????ī???????BUG??
???????????????????virtual?????У???????????????á???????????virtual????????????????????????????????????????????顣
??????????????
1 class E
2 {
3 public:
4     virtual void func(int i = 0)
5     {
6         std::cout << "E::func() "<< i <<" ";
7     }
8 };
9 class F : public E
10 {
11 public:
12     virtual void func(int i = 1)
13     {
14         std::cout << "F::func() " << i <<" ";
15     }
16 };
17
18 void test2()
19 {
20     F* pf = new F();
21     E* pe = pf;
22     pf->func(); //F::func() 1  ????????????
23     pe->func(); //F::func() 0  ??????????????????????????????????????????в???????????
24 }
????????????????????????Effective C++ ?????桷 ????37??
????????????????飺
???????????????????ж?????virtual?????????????????????????????????????????Ч???????virtual?????????????