但是有什么用那?
我也在想,后來,我這樣聲明personal類的成員:
class person
{
private:
time birthday;
char sex[10];
char name[20];
public:
……
}
這就是傳說中的組合!我在教材上找了半天,竟然沒找到,還說教材好,好個(gè)屁!連組合都沒有!
廢話不說了,這里面的的time類的birthday就被稱為內(nèi)嵌對(duì)象!
構(gòu)造函數(shù)要這樣寫:
person(time b, char s[],char n[]) : birthday(b)
{
sex = s;
name = n;
}
現(xiàn)在改改father類:
class father
{
time birthday;
char secondname[10];
father(time b,char sn[]) : birthday(b)
{
strcpy(secondname,sn);
}
}
還有son類:
class son : father
{
char sex[10];
son(char sn[],char mysex[]) : father(sn) , birthday(b)
{
strcpyu(sex,mysex);
}
}
注意加紅的地方:
son(char sn[],char mysex[]): father(sn), birthday(b)
寫構(gòu)造函數(shù)時(shí),先寫父類,再寫內(nèi)嵌成員(別問我為什么,我也不知道哪,你可以自己試試不這樣做會(huì)怎樣,我沒試過)。
當(dāng)然兒子一般是不和老爹生日一樣的,這里這樣寫是不合邏輯的。
面向?qū)ο笞畲蟮膬?yōu)點(diǎn)就是它跟現(xiàn)實(shí)世界比較相近:
類,代表了一類事物,數(shù)據(jù)成員就是這類事物的屬性;函數(shù)是他們的功能。任何事物都可以抽象成為類。
比如人,有身高體重,身高體重就可以聲明為數(shù)據(jù)成員;人會(huì)跑,這就相當(dāng)與函數(shù)。
繼承也是自然世界普遍存在的現(xiàn)象:比如學(xué)生,老師,白領(lǐng),都屬于人類,我們亦可以說他們繼承自人這個(gè)類;也能說人派生了這些類。(不一定非要老爹派生兒子!)
有些屬性,就比如年齡,也屬于一個(gè)類,但年齡派生不出人類,這是我們就可以用組合。被內(nèi)嵌的類與這個(gè)類之間是包含與被包含的關(guān)系。
當(dāng)然,我們完全可以讓人這個(gè)類派生自時(shí)間類,不會(huì)錯(cuò)。很多時(shí)候組合可以被許多其他方法替代,所以組合在c++中不是一塊非常重要的內(nèi)容,但我還是比較喜歡使用組合,而且了解了解沒壞處,所以單用一晚上寫了這篇日志。其實(shí)關(guān)鍵是我沒聽到老師講,不是非常重要,但也很重要!
畢竟我們學(xué)c++主要是為了學(xué)面向?qū)ο笏枷?說到實(shí)用,還是學(xué)Java和c#好,簡(jiǎn)單,很多東西根本就沒有,所以很多東西你永遠(yuǎn)不會(huì)明白了。
相關(guān)推薦:C++備考之如何學(xué)習(xí)C++與面向?qū)ο螅侯惻c對(duì)象北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |