私有繼承與包含

2021-08-07 09:07:59 字數 563 閱讀 8601

c++要實現has-a關係,除了包含,還可以使用私有繼承。

私有繼承的基類所有public,protected方法都會變成派生類中的private方法,這意味著基類方法不會成為派生類公有介面一部分,即只能通過派生類的基類成員呼叫基類方法。

私有繼承的語法:

//用private修飾基類

//private是預設修飾關鍵字,若繼承時未註明public,則是private繼承

class student:private valarray,private string;

私有繼承和包含的主要差別在於,包含為派生類提供的是顯式命名的物件成員,而私有繼承提供的是無名稱的物件成員。比如建構函式:

//包含的建構函式

class student

};//私有繼承的建構函式

typedef valarrayvarraydb;

class student:string,varraydb //要用string(str),str需是乙個c式字元型指標

};

包含與繼承

在 大全 這本書的第六章中提到了有關包含與繼承的一些原則,我摘取如下 一 包含 has a 包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成...

C 包含與繼承

class point double getx double gety void setx double x void sety double y class line intmain class point double getx double gety void setx double x vo...

C C private私有繼承

private繼承方式 1 基類成員對其物件的可見性 公有成員可見,其他成員不可見。2 基類成員對派生類的可見性 公有成員和保護成員是可見的,而私有成員是不可見的。3 基類成員對派生類物件的可見性 所有成員都是不可見的。所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。a con...