gpt4 book ai didi

c++ - 多态性实现

转载 作者:行者123 更新时间:2023-11-30 04:50:08 25 4
gpt4 key购买 nike

假设我有 A 类、继承 A 的 B 类和也继承 A 的 C 类。C 类有方法 F,而 B 类没有。

class A {
//Some stuffs
};

class B : public A {
//Some stuffs.
};

class C : public A {
void F ();
};

我的问题是,当我有一个我不完全知道它属于哪个类的对象时(它可以是 B 或 C),我想使用类 A 的指针检查该对象,如果对象属于类C,那么我想调用方法F。我如何实现这些类?

我想要这样的东西。

A *_a = Something;
if (_a is pointing to object of class C){
_a->F;
}

现在,我正在考虑将方法 F 作为 A 类中的虚方法,但我认为这不是一个真正好的方法,因为实际上只有 C 类拥有它,如果是的话我这样做了,对于 C 类中我想要的每个方法,我也必须将它添加到 A 类中。有什么解决方法吗?

最佳答案

如果这确实是你想要坚持的设计,你首先需要有一个虚拟基础(例如通过在 A 中声明析构函数虚拟:virtual ~A() = default;,那么你可以简单地做:

   if(typeid(*_a) == typeid(C)) {
static_cast<C*>(_a)->F();
}

关于c++ - 多态性实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105871/

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