OOP 标识派生对象

OOP identify derived object

本文关键字:对象 派生 标识 OOP      更新时间:2023-10-16

>我有三个从同一个父类继承的类。 并且我有将父类型(典型多态性(作为参数的函数。 如何区分对象的真实类型?谢谢

class Parent{}
class A : public Parent{}
class B : public Parent{}
class C : public Parent{}
void test(Parent &input){
/*
how do i know the object is A, B or C?
I want to perform some operations on the input
but it's different depends on input's true type.
*/
}

标准解决方案是多孔类的常用解决方案:虚函数!

Parent类中创建一个纯虚函数,该函数在所有子类中被覆盖和实现。然后,test函数只调用此函数,子类实现可以执行其自己的类所需的任何特定操作。

无需检查类,这几乎总是设计不佳的标志。

也许责任链在这里很合适。您将收到的对象传递给子类型链,并让链中的链接决定是否让它们处理此对象,如果不是,那么它们将继续将对象转发到链中的下一个链接。