国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

解析C++編程中的繼承方面的運(yùn)用

2020-01-26 14:51:13
字體:
供稿:網(wǎng)友

C++繼承與組合詳解
我們知道,在一個(gè)類中可以用類對(duì)象作為數(shù)據(jù)成員,即子對(duì)象(詳情請(qǐng)查看:C++有子對(duì)象的派生類的構(gòu)造函數(shù))。實(shí)際上,對(duì)象成員的類型可以是本派生類的基類,也可以是另外一個(gè)已定義的類。在一個(gè)類中以另一個(gè)類的對(duì)象作為數(shù)據(jù)成員的,稱為類的組合(composition)。

例如,聲明Professor(教授)類是Teacher(教師)類的派生類,另有一個(gè)類BirthDate(生日),包含year,month,day等數(shù)據(jù)成員。可以將教授生日的信息加入到Professor類的聲明中。如:

class Teacher //教師類{public:  // Some Codeprivate:  int num;  string name;  char sex;};class BirthDate //生日類{public:  // Some Codeprivate:  int year;  int month;  int day;};class Professor:public Teacher //教授類{public:  // Some Codeprivate:  BirthDate birthday; //BirthDate類的對(duì)象作為數(shù)據(jù)成員};

類的組合和繼承一樣,是軟件重用的重要方式。組合和繼承都是有效地利用已有類的資源。但二者的概念和用法不同。通過繼承建立了派生類與基類的關(guān)系,它是一種 “是”的關(guān)系,如“白貓是貓”,“黑人是人”,派生類是基類的具體化實(shí)現(xiàn),是基類中的一 種。通過組合建立了成員類與組合類(或稱復(fù)合類)的關(guān)系,在本例中BirthDate是成員類,Professor是組合類(在一個(gè)類中又包含另一個(gè)類的對(duì)象成員)。它們之間不是‘‘是”的 關(guān)系,而是“有”的關(guān)系。不能說教授(Professor)是一個(gè)生日(BirthDate),只能說教授(Professor)有一個(gè)生日(BirthDate)的屬性。

Professor類通過繼承,從Teacher類得到了num,name,age,sex等數(shù)據(jù)成員,通過組合,從BirthDate類得到了year,month,day等數(shù)據(jù)成員。繼承是縱向的,組合是橫向的。

如果定義了Professor對(duì)象prof1,顯然prof1包含了生日的信息。通過這種方法有效地組織和利用現(xiàn)有的類,大大減少了工作量。如果有
 

  void fun1(Teacher &);  void fun2(BirthDate &);

在main函數(shù)中調(diào)用這兩個(gè)函數(shù):
  

 fun1(prof1); //正確,形參為Teacher類對(duì)象的引用,實(shí)參為Teacher類的子類對(duì)象,與之賦值兼容  fun2(prof1.birthday); //正確,實(shí)參與形參類型相同,都是BirthDate類對(duì)象  fun2(prof1); //錯(cuò)誤,形參要求是BirthDate類對(duì)象,而prof1是Professor類型,不匹配

如果修改了成員類的部分內(nèi)容,只要成員類的公用接口(如頭文件名)不變,如無必要,組合類可以不修改。但組合類需要重新編譯。

繼承在軟件開發(fā)中的重要意義
繼承是面向?qū)ο蠹夹g(shù)的重要內(nèi)容,有了繼承,使軟件的重用成為可能。

過去,軟件人員開發(fā)新的軟件,能從已有的軟件中直接選用完全符合要求的部件不 多,一般都要進(jìn)行許多修改才能使用,實(shí)際上有相當(dāng)部分要重新編寫,工作童很大??s短軟件開發(fā)過程的關(guān)鍵是鼓勵(lì)軟件重用。繼承機(jī)制解決了這個(gè)問

主站蜘蛛池模板: 阜宁县| 广灵县| 宾川县| 凭祥市| 临夏市| 屏山县| 淳安县| 荔波县| 绥中县| 孝感市| 化德县| 林西县| 隆尧县| 海淀区| 溧阳市| 铁岭市| 同仁县| 津市市| SHOW| 望谟县| 闽侯县| 广元市| 灯塔市| 仲巴县| 长治县| 大兴区| 锡林郭勒盟| 安多县| 牡丹江市| 汶川县| 新田县| 嘉禾县| 鸡泽县| 黄石市| 古交市| 方城县| 凭祥市| 开封市| 绵竹市| 高州市| 清新县|