人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

高質(zhì)量C++/C編程向?qū)?10)

高質(zhì)量C++/C編程向?qū)?10)

更新時(shí)間:2022-07-07 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

第10章 類的繼承與組合

  對象(Object)是類(Class)的一個(gè)實(shí)例(Instance)。如果將對象比作房子,那么類就是房子的設(shè)計(jì)圖紙。所以面向?qū)ο笤O(shè)計(jì)的重點(diǎn)是類的設(shè)計(jì),而不是對象的設(shè)計(jì)。
  對于C++程序而言,設(shè)計(jì)孤立的類是比較容易的,難的是正確設(shè)計(jì)基類及其派生類。本章僅僅論述“繼承”(Inheritance)和“組合”(Composition)的概念。

  注意,當(dāng)前面向?qū)ο蠹夹g(shù)的應(yīng)用熱點(diǎn)是COM和CORBA,這些內(nèi)容超出了C++教材的范疇,請閱讀COM和CORBA相關(guān)論著。

  10.1 繼承
  如果A是基類,B是A的派生類,那么B將繼承A的數(shù)據(jù)和函數(shù)。例如:

  class A

  {

  public:

  void Func1(void);

  void Func2(void);

  };


  class B : public A

  {

  public:

  void Func3(void);

  void Func4(void);

  };


  main()

  {

  B b;

  b.Func1(); // B從A繼承了函數(shù)Func1

  b.Func2(); // B從A繼承了函數(shù)Func2

  b.Func3();

  b.Func4();

  }


  這個(gè)簡單的示例程序說明了一個(gè)事實(shí):C++的“繼承”特性可以提高程序的可復(fù)用性。正因?yàn)椤袄^承”太有用、太容易用,才要防止亂用“繼承”。我們應(yīng)當(dāng)給“繼承”立一些使用規(guī)則。


  l 【規(guī)則10-1-1】如果類A和類B毫不相關(guān),不可以為了使B的功能更多些而讓B繼承A的功能和屬性。不要覺得“白吃白不吃”,讓一個(gè)好端端的健壯青年無緣無故地吃人參補(bǔ)身體。

  l 【規(guī)則10-1-2】若在邏輯上B是A的“一種”(a kind of ),則允許B繼承A的功能和屬性。例如男人(Man)是人(Human)的一種,男孩(Boy)是男人的一種。那么類Man可以從類Human派生,類Boy可以從類Man派生。

  class Human

  {

  …

  };

  class Man : public Human

  {

  …

  };

  class Boy : public Man

  {

  …

  };


  u 注意事項(xiàng)

  【規(guī)則10-1-2】看起來很簡單,但是實(shí)際應(yīng)用時(shí)可能會(huì)有意外,繼承的概念在程序世界與現(xiàn)實(shí)世界并不完全相同。

  例如從生物學(xué)角度講,鴕鳥(Ostrich)是鳥(Bird)的一種,按理說類Ostrich應(yīng)該可以從類Bird派生。但是鴕鳥不能飛,那么Ostrich::Fly是什么東西?

  class Bird

  {

  public:

  virtual void Fly(void);

  …

  };


  class Ostrich : public Bird

  {

  …

  };


  例如從數(shù)學(xué)角度講,圓(Circle)是一種特殊的橢圓(Ellipse),按理說類Circle應(yīng)該可以從類Ellipse派生。但是橢圓有長軸和短軸,如果圓繼承了橢圓的長軸和短軸,豈非畫蛇添足?

  所以更加嚴(yán)格的繼承規(guī)則應(yīng)當(dāng)是:若在邏輯上B是A的“一種”,并且A的所有功能和屬性對B而言都有意義,則允許B繼承A的功能和屬性。

[1] [2]  下一頁

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 文水县| 牟定县| 勐海县| 禹州市| 潜江市| 大余县| 辽中县| 海淀区| 炎陵县| 鄂尔多斯市| 安顺市| 罗定市| 左贡县| 扎赉特旗| 达孜县| 四会市| 衡东县| 津市市| 白城市| 汉沽区| 台东市| 河南省| 突泉县| 余江县| 昌图县| 鹿邑县| 石阡县| 清远市| 商南县| 新民市| 马公市| 贞丰县| 安徽省| 芮城县| 宁城县| 巴东县| 科技| 泾阳县| 威远县| 莲花县| 巴彦淖尔市|