c*********e 发帖数: 16335 | 2 HumanBeing 有3个子类:Male, Female, Gay。
你这个是用if...else把不同的子类分开,如果子类是Male,这么做;如果子类是Female,
这么做. 那么,如果再要加一个新的子类,Transgender,你的很多函数要重新写了,比
如下面这个BangWith()函数。况且,gay,可以是Male, or Female.
struct Female : public HumanBeing {
virtual void BangWith(HumanBeing& that) {
HumanBeing::BangWith(that);
Male* male = dynamic_cast (&that);
if (male) {
pussy->Eat(male->ShowStuff());
} else {
Female* female = dynamic_cast (&that);
if ... 阅读全帖 |
|