條款42 明智地使用私有繼承

2022-03-17 19:21:40 字數 344 閱讀 3785

第乙個規則是,和公有繼承相反,如果兩個類之間的繼承關係為私有,編譯器一般不會將派生類物件(如student)轉換成基類物件(如person)

第二個規則是,從私有基類繼承而來的成員都成為了派生類的私有成員,即使它們在基類中是保護或公有成員,即派生類物件不能訪問基類的所有成員

class

person{};

class student :private

person{};

void dance(const person &p);

person p;

student s;

void

main()

條款42 明智地使用私有繼承

條款35說明,c 將公有繼承視為 是乙個 的關係。它是通過這個例子來證實的 假如某個類層次結構中,student類從person類公有繼承,為了使某個函式成功呼叫,編譯器可以在必要時隱式地將student轉換為person。這個例子很值得再看一遍,只是現在,公有繼承換成了私有繼承 class per...

明智地使用Pimpl

明智地使用pimpl 首先引用一下別人的內容 pimpl 用法背後的思想是把客戶與所有關於類的私有部分的知識隔離開。由於客戶是依賴於類的標頭檔案的,標頭檔案中的任何變化都會影響客戶,即使僅是對私有節或保護節的修改。pimpl用法隱藏了這些細節,方法是將私有資料和函式放入乙個單獨的類中,並儲存在乙個實...

Item 39 明智地使用 private 繼承

public 繼承表示 is a 的關係,這是因為編譯器會在需要的時候將子類物件隱式轉換為父類物件。然而 private 繼承則不然 class person class student private person void eat const person p person p student ...