首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多态实现

多态实现
EN

Stack Overflow用户
提问于 2019-03-12 00:02:14
回答 1查看 42关注 0票数 1

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

代码语言:javascript
运行
复制
class A {
    //Some stuffs
};

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

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

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

我想要这样的东西。

代码语言:javascript
运行
复制
A *_a = Something;
if (_a is pointing to object of class C){
    _a->F;
}

现在,我正在考虑让方法F作为类A中的虚方法,但我不认为这是一个很好的方法,因为只有类C才有它,如果我是这样做的,那么对于我想在类C中使用的每个方法,我也必须将它添加到类A中。有什么变通方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-12 00:31:34

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

代码语言:javascript
运行
复制
   if(typeid(*_a) == typeid(C)) {
    static_cast<C*>(_a)->F();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55105871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档