類之間的關(guān)系
在本次課程中,類與類之間的關(guān)系被分為三種:復(fù)合、繼承、委托。
復(fù)合Composition
復(fù)合可以表示為has-a
class A has a class B.
對(duì)于復(fù)合,各自負(fù)責(zé)各自的構(gòu)造和析構(gòu)就可以,構(gòu)造Container時(shí),需要先構(gòu)造Component,這一步是由編譯器來幫我們實(shí)現(xiàn)的。需要注意的是編譯器幫我們構(gòu)造Component時(shí),采用的是默認(rèn)的構(gòu)造函數(shù),若默認(rèn)構(gòu)造函數(shù)不是我們想要的時(shí)候,就需要自己按照上圖的格式,利用構(gòu)造Container時(shí)的初值列來先完成Component的構(gòu)造
委托Delegation (Composition by reference)
左邊通過指針指向右邊,在左邊需要右邊的時(shí)候就可以通過指針來調(diào)用右邊。
這樣做的一個(gè)好處是,左邊永遠(yuǎn)不用變,但是可以通過指針指向不同的右邊來實(shí)現(xiàn)不同的功能
繼承
繼承可以表示為is-a
對(duì)于構(gòu)造與析構(gòu),繼承與復(fù)合一致。
先調(diào)用父類的構(gòu)造函數(shù),再執(zhí)行自己的構(gòu)造函數(shù)。先執(zhí)行自己的析構(gòu)函數(shù),再調(diào)用父類的析構(gòu)函數(shù)。
注意!!!!!
父類的析構(gòu)函數(shù)必須是虛函數(shù)!