多态性实现
Polymorphism Implementation
假设我有类A,B类继承A,C类也继承A.类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++ 中实现多态性有哪些不同的方法
- 可以使用不同的实现文件来实现多态性吗
- 如何在嵌套类中实现多态性
- 如何利用多态性实现数据本地化
- 一个具有多态性的2-3树的设计与实现
- 如何在多态性c++中实现这个类
- 如何实现几个函数的编译时多态性
- 我们可以通过const函数实现多态性吗
- 用排序函数实现多态性
- c++中通过虚函数实现的运行时多态性
- 如何:在打印函数中实现多态性
- 使用模板实现多态性
- 虚拟函数是在C++中实现运行时多态性的唯一途径吗
- 在这种情况下,哪种设计模式有利于实现运行 tiime 多态性
- 技术实现多态性,但节省4字节