Effective C++ 第三十二條 Make sure public inheritance models “is-a”.

確定你的 public 繼承塑膜出 is-a 關(guān)系
先說清楚什么是 “is-a”,如下方例子
person 是一個 base,student 是 person 的一個 derived。如果現(xiàn)在有幾個函數(shù)
eat 函數(shù)放入 person 還是 student 都可以,但是 exam 函數(shù)放入 person 就會報錯,因為 student 本身也是 person,但是 person 不一定是 student。C++ 中 base 好比一種類別,derived 就是一種特例。人是一個寬泛的概念,人里面有學生、律師、工人等,而學生、律師等就是人的細化(分類)。base 不一定是 derived,但是 derived 一定是 base。凡是放入 base 作為參數(shù)的位置都可以放入 derived,反之則不行。
需要注意,本章說的 is-a 關(guān)系是 public inheritance,不包括 protected 和 private。
總結(jié):
public “繼承” 意味著 is-a,適用于 base classes 身上的每一件事情一定也適用于 derived classes 身上,因為每一個 derived classes 對象也都是一個 base classes 對象。
標簽: