C++?е???????????
???????????? ???????[ 2014/4/28 10:55:00 ] ????????C++ ??? ???
?????????????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?????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11