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)
void
sety
(double y)};
class line
double
getdistance()
void
setp1
(double x,
double y)};
intmain()
class line
line
(double ax =0,
double ay =0,
double bx =0,
double by =0)
:p2(bx,by),p1
(ax,ay)
//雖然p2在前,但是根據宣告順序,先構造p1};
intmain()
基類成員在派生類中的可見性
訪問宣告
通過繼承基類,派生類就擁有訪問基類protected 成員特權,如果擔心封裝性被破壞,可以宣告為private,在protected中提供訪問器函式。
通常私有繼承可以被包含所代替,protected繼承也不經常使用。
例項
class shape
如果擴充了派生類的介面,那麼派生類物件可以接收的訊息就有別於基類物件了,能傳送給基類物件的訊息扔然能傳送給派生類,反之則不能。這時,派生類與基類之間可以描述為「is-like-a」關係。
不能自動繼承的成員 例項
class point2d
double
getx()
double
gety()
void
setx
(double xx)
void
sety
(double yy)
void
moveto
(double xx,
double yy)
void
print()
};class point3d : public point2d
double
getz()
void
setz
(double zz)
void
moveto
(double xx,
double yy,
double zz)
//覆蓋了point2d::moveto
包含與繼承
在 大全 這本書的第六章中提到了有關包含與繼承的一些原則,我摘取如下 一 包含 has a 包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成...
私有繼承與包含
c 要實現has a關係,除了包含,還可以使用私有繼承。私有繼承的基類所有public,protected方法都會變成派生類中的private方法,這意味著基類方法不會成為派生類公有介面一部分,即只能通過派生類的基類成員呼叫基類方法。私有繼承的語法 用private修飾基類 private是預設修飾...
C 包含和繼承
包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成員的類。繼承的概念是說乙個類是另乙個類的一種特化。1 採用public繼承實現 is a 的...