如果你编写类D(“派生类”)public继承类B(“基类”),就是在告诉C++编译器(以及代码的读者)每个类型D的对象都是类型B的对象,但反之则不然。
class Person {
...};
class Student: public Person {
...};
void eat(const Person& p); // 素有的Person都可以吃东西
void study(const Student& s); // 只有Student才可以上课学习
Person p; // p 是一个 Person对象
Student s; // s 是一个 Student对象
eat(p); // 没问题, p 是一个 Person对象
eat(s)