在c++中,子节点适合父节点的位置



在我的java类中,我记得创建了一个保存动物类对象的barn类,我的chicken和cow类(它们是动物类的子类)可以像它们的父母一样放入barn中。

我想知道如果c++也允许这个?

是的。一般的概念被称为利斯科夫替代原理。

在c++中出现但在Java中没有的一个问题是切片:什么是对象切片?

在您的java示例中,您可能持有对Animal类的引用。在这种情况下,您可以在该引用中使用Animal类的任何后代类。

对于c++也是一样,如果你使用指向实例的指针。如:

class Barn
{
public:
    Animal* animal;
};
class Animal
{
public:
};
class Chicken : public Animal
{
public:
};

Barn::animal甚至可以引用Chicken类。

最新更新