C++?е????????????????????
???????????? ???????[ 2012/10/17 10:16:06 ] ????????
??????????C++???Щ????????????麯????????????????У??????????????????Щ?????????????????д????
????1??C++?е??麯????virtual function??
?????麯????C++?????????????polymorphism????????????????????????????????????????????????????????????Σ?
class A
{
public:
virtual void foo() { cout << "A::foo() is called" << endl;}
};
class B: public A
{
public:
virtual void foo() { cout << "B::foo() is called" << endl;}
};
??????????????????????????
A * a = new B();
a->foo(); // ??????a????????A??????????????????(foo)???B??!
??????????????麯?????????????????????????????????麯???????Щ?????????????ν“???????”????“???????”??????????????ò?????????????????????????????????????????????д??????????????????????????????????????????????????????????“??”??????
?????麯?????????????????????????????Ч??????????????????????????????麯?????????????????
class A
{
public:
virtual void foo();
};
class B: public A
{
virtual void foo();
};
void bar()
{
A a;
a.foo(); // A::foo()??????
}
????1.1 ???
????????????麯????????????????????????????????????????????Σ?????????????????????Щ??
void bar(A * a)
{
a->foo(); // ?????????A::foo() ????B::foo()??
}
???????foo()????麯??????????bar????????У????????δ????????????????????A::foo()????B::foo()???????????????????a??????A??????????A::foo()??????????a??????B??????????B::foo()?????á?
???????????????????????Ч????????????“???”??
????1.2 ??????????
?????????????棬????????????????????????????????????仰??????????C++????????????????????????????????????????????????????????????????????????????????????????????????????????н???????????????????????????£??????????????????????????????????
?????????????????У???????????????г?????????????У???????????????????Ρ???????ε??????????????????????????????????????д?????????????????????????д????????????????????????????????????????????????????κε?????????????????????????“???”?????????д?????????????????????????????????????????????????????????е?“bad smell”????
??????????????????????????????????????1.1?е??????bar()???A-B??????ε??????????????????????????ж???????????????????????????????????????????C???A????????????bar()??????“???”??????????????鸚????--??????????麯????????????????????????????ú????????
??????
???·???
??????????????????
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