(c ++)superClass * Object = new child Class()

时间:2014-02-28 04:12:43

标签: c++ inheritance instantiation

这究竟是做什么的? 我很迷惑。

是否可以在左侧声明为superClass但在右侧调用childClass?

我什么时候需要使用这种代码?

superClass *myObject = new childClass();  

2 个答案:

答案 0 :(得分:1)

  

这究竟是做什么的?

它创建一个childClass类型的动态对象;并将指针转换为指向superClass的指针。这是可能的,因为(如果要相信名称)childClass派生自superClass。继承定义了“是一个”关系,因此派生类(childClass)的对象可以被视为基类的对象(superClass)。

然后它可能会导致内存泄漏或其他一些内存管理问题,因为使用指针很难正确地设置动态对象。

  

是否可以在左侧声明为superClass但在右侧调用childClass?

在这种情况下,它是一个指针,而不是对象本身。声明指向基类类型的指针实际上可以指向派生类类型的对象。这就是面向对象的多态在C ++中的工作原理:与基类交互的代码可以与任何派生类进行交互。

  

我什么时候需要使用这种代码?

何时需要面向对象的多态性。你的C ++入门书应该解释它是如何工作的 - 这是一个太大的主题,无法在这里解释。

答案 1 :(得分:-1)

C ++中有一个重要的东西,名为polymorphism