C ++中的糟糕:B * b =新B()和A * b =新B()之间的区别是什么

时间:2019-02-22 13:21:37

标签: c++ oop inheritance

此刻我正在学习C ++中的Oop,我一直在想这个(B扩展了A)

A* b = new B()

我搜索了一下,发现b具有与B类相同的功能,因此我(!!)了解此与B类之间的区别是什么

A* a = new A()

但是(!!)不理解此陈述与以下内容之间的区别:

B* b = new B()

请帮忙:)

1 个答案:

答案 0 :(得分:3)

这仅表明您可以使用超类的指针来引用子类。这对于多态性很有用。

例如,假设您有一个名为“ Shape”的类,并且还有其他类(如“ Square”和“ Triangle”)扩展了“ Shape”。您可以编写一个在“ Shape”上运行的函数,然后例如可以执行以下操作:

void doSomething(Shape* s);

Shape* triangle = new Triangle();
Shape* square = new Square();
doSomething(triangle);
doSomething(square);