gpt4 book ai didi

c++ - dynamic_cast 与在父类中公开虚函数 (C++)

转载 作者:太空狗 更新时间:2023-10-29 19:46:26 24 4
gpt4 key购买 nike

我有一个父类“base”和另一个继承自“base”的类“derived”。

“派生”有 1 个方法 cH1。

如果我这样做:

base* b = new derived();

我希望能够做到这一点:

b->cH1();

显然我不能,有 2 个解决方案:

  • 要么在 base 中将 cH1 声明为纯虚拟。
  • 或者这样做:

    dynamic_cast<derived*>(b)->cH1();

哪个是更好的做法?

最佳答案

如果cH1 方法在语义上适用于base,则使它成为base 的方法。否则,将 cH1 留给 derived,并使用 dynamic_cast。我认为您的类的语义应该会影响您的选择。

例如,如果您有基类 Vehicle 和派生类 CarMotorbikeAircraft ,像 TakeOff() 这样的方法具有与 Aircraft 兼容的语义,但与 CarMotorbike 不兼容,所以你可能想让 TakeOff() 成为 Aircraft 方法,而不是 Vehicle 方法。

关于c++ - dynamic_cast 与在父类中公开虚函数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427562/

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