这究竟是做什么的? 我很迷惑。
是否可以在左侧声明为superClass但在右侧调用childClass?
我什么时候需要使用这种代码?
superClass *myObject = new childClass();
答案 0 :(得分:1)
这究竟是做什么的?
它创建一个childClass
类型的动态对象;并将指针转换为指向superClass
的指针。这是可能的,因为(如果要相信名称)childClass
派生自superClass
。继承定义了“是一个”关系,因此派生类(childClass
)的对象可以被视为基类的对象(superClass
)。
然后它可能会导致内存泄漏或其他一些内存管理问题,因为使用指针很难正确地设置动态对象。
是否可以在左侧声明为superClass但在右侧调用childClass?
在这种情况下,它是一个指针,而不是对象本身。声明指向基类类型的指针实际上可以指向派生类类型的对象。这就是面向对象的多态在C ++中的工作原理:与基类交互的代码可以与任何派生类进行交互。
我什么时候需要使用这种代码?
何时需要面向对象的多态性。你的C ++入门书应该解释它是如何工作的 - 这是一个太大的主题,无法在这里解释。
答案 1 :(得分:-1)
C ++中有一个重要的东西,名为polymorphism