如果你令class D以public形式继承class B,你便是告诉C++编译器,每一个类型为D的对象同时也是一个类型为B的对象,反之不成立;
考虑以下代码:
class Person {};
class Student : public Person {};
void eat(const Person &p); // 任何人都会吃
void study(const Student &s) // 只有学生才到校学习
Person p; // p是人
Student s; // s是学生
eat(p); // 没问题,p是人
eat(s); // 没问题,s是学生,也是人
study(s); // 没问题,s是个学生
study(p); // 错误, p不是个学生
- "public 继承"意味着is-a;适用于bass classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象