在我的java课程中,我记得制作一个包含动物类物品的谷仓类,而我的鸡和牛类(它们是动物类的孩子)将适合谷仓,就像他们是他们的父母一样。
我想知道c ++是否也允许这个?
答案 0 :(得分:4)
是的。一般概念称为Liskov Substitution Principle。
要注意的一个问题是在C ++中出现但在Java中不是切片:What is object slicing?
答案 1 :(得分:1)
在您的java示例中,您可能拥有对Animal
类的引用。在这种情况下,您可以在该引用中使用Animal
类的任何后代类。
如果使用指向实例的指针,则与C ++相同。像:
class Barn
{
public:
Animal* animal;
};
class Animal
{
public:
};
class Chicken : public Animal
{
public:
};
Barn::animal
甚至可以引用Chicken
类。
我希望这会有所帮助。