【发布时间】:2012-05-15 08:52:04
【问题描述】:
假设我们有 2 个类 A 和 B。它们都是超类 C 的子类。现在让我们假设 C 定义了一个方法 areYouA(),这是一个询问对象是否是 A 类的对象的方法。
因此,在 c++ 中可能的代码是:
C object1 = A()
C object2 = B()
if (object1.areYouA()==true){//crazy code here regarding if it's an A object}
if (object2.areYouA()==false){//crazy code here regarding if it's a B object}
从 OO POV 中向 B 和 C 类添加方法以询问它们各自的对象是否属于 A 类是否正确???如果它不正确,那么还有什么方法可以解决这个问题????我的目标很明显,我需要 2 个 A 类和 B 类,在某些时候,我有部分二进制数据可能属于 A 类或 B 类,而且一个对象最初也属于 A 类,因为它得到完整的,它的结构需要改变,它的一些行为也需要改变,因此成为 B 类的对象。所以我的方法是将抽象类视为父类,最初声明一个 C 对象但存储一个 A 对象,然后在 B 对象更改时存储它。 有没有另一种方法,比如模式???
附加信息:
我想我不是很清楚这一点。假设我想将来自 A 对象的信息存储在 file1 中,并将来自 B 对象的信息存储在 file2 中。如果将其母类用作接口,那么我如何判断它是存储在相应文件中的 A 对象还是 B 对象?我是否应该为每个对象添加一个属性,因为它们也属于它们的文件名???这意味着如果我需要更改文件名,那么每个对象也需要更改。
【问题讨论】:
-
您的代码无法编译,即使编译了它也不会按照您的想法进行。多态性仅通过引用和指针起作用,而不是通过副本(参见“切片”)。
标签: c++ design-patterns subclass superclass