c++如何將public繼承視為is-a。
private繼承並意味著 is-a
如果類之間的繼承關係是private。編譯器不會自動將乙個derived物件轉換成乙個base classes。
這和public繼承的情況不同。
由private base classes繼承而來的所有成員,在derived class中都會變成private屬性,總是他們在base classes中原本是protected或者public
private繼承意味著implementation in terms of(根據某物實現出)。如果你讓class d 以private 形式繼承class b,你的泳衣是為了採用
class b內已經具備的某些特徵,不是因為b物件和d物件存在有任何觀念上的關係。
private繼承只是一種實現技術,private繼承意味著只有實現部分被繼承,介面部分應略去。
private繼承在
i軟體設計層面上沒有意義,其意義只在於軟體實現層面上。
什麼時候使用復合什麼時候使用private 繼承呢?
答案是:盡可能使用繼承,必要時才使用privtae繼承。
何時才是必要呢?
主要是當protected成員和或virtual函式牽扯進來的時候。
private繼承可以造成empty base最優化。這對於致力於物件尺寸最小化的程式庫開發者而言,可能很重要。
明智而審慎的使用private繼承
private繼承的兩條規則 1 編譯器不會將乙個derived class轉化為baseclass,但是卻可以顯示轉換。也就是,他們之間不是is a的關係。2 從基類繼承的所有的成員和方法都將變為private屬性。也就是,它只繼承實現,不整合介面。private繼承意味著 根據某物實現出 它和復...
條款39 明智而審慎的使用private繼承
use private inheritance judiciously.如果classes之間的繼承關係是private,編譯器不會自動將乙個derived class物件轉換為乙個base class物件。這和public繼承的情況不同。由private base class繼承而來的所有成員,在...
C 明智而審慎地使用多重繼承
20180327 c 明智而審慎地使用多重繼承 當多重繼承 multiple inheritance,mi 運用到程式設計中時,程式有可能從乙個以上的基類繼承相同的名稱 如函式,typedef等 那會導致較多的歧義,eg class borrowableitem class company clas...