【发布时间】:2014-04-07 22:51:26
【问题描述】:
我只是想知道有没有办法做这样的事情:
Class A {}; //Base class
Class B : A {}; //B inherits from A
Class C : A {}; //C inherits from A
...
...
...
void func(B){do x;}
void func(C){do y;}
...
...
...
list<A> l //l contains Bs or Cs.
for each element in l {func(element);}
并获得每个人的预期行为?
【问题讨论】:
-
你必须让
A有一个virtual析构函数,并且你要覆盖的函数也是virtual;然后使用list<A*>,或者最好使用list< shared_ptr<A> >
标签: c++ inheritance overloading virtual