我只想知道有没有办法做这样的事情:
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);}
并获得每个人的预期行为?
最佳答案
您可以执行以下操作:
class A // Base clss
{
public: // or protected, depends on your needs
virtual void func() {};
};
class B : public A //B inherits from A
{
public: // or protected, depends on your needs
void func() { do x };
};
class C : public A //C inherits from A
{
public: // or protected, depends on your needs
void func() { do y };
};
...
...
...
list<A*> l //l contains Bs or Cs.
for each element in l { element->func(); }
通过这种方式,您可以使用多态性而不是重载静态函数 func。
关于c++ - 应用于基类列表的覆盖函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924573/