gpt4 book ai didi

c++ - 应用于基类列表的覆盖函数

转载 作者:行者123 更新时间:2023-11-28 02:51:35 25 4
gpt4 key购买 nike

我只想知道有没有办法做这样的事情:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com