軟體工程課設反覆式開發法第五至七天

來源:互聯網
上載者:User

標籤:

繼續編寫技能部分,為了保證代碼的整潔,所以把player.h的參數傳傳送給skill.h,在skill.cpp中進行代碼修改。

  所運用的知識:

  構造方法用來初始化類的對象,與父類的其它成員不同,它不能被子類繼承(子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法)。因此,在建立子類對象時,為了初始化從父類繼承來的資料成員,系統需要調用其父類的構造方法。

    如果沒有顯式的建構函式,編譯器會給一個預設的建構函式,並且該預設的建構函式僅僅在沒有顯式地聲明建構函式情況下建立。

 

構造原則如下:

 

    1. 如果子類沒有定義構造方法,則調用父類的無參數的構造方法。

 

    2. 如果子類定義了構造方法,不論是無參數還是帶參數,在建立子類的對象的時候,首先執行父類無參數的構造方法,然後執行自己的構造方法。

 

    3. 在建立子類對象時候,如果子類的建構函式沒有顯示調用父類的建構函式,則會調用父類的預設無參建構函式。

 

    4. 在建立子類對象時候,如果子類的建構函式沒有顯示調用父類的建構函式且父類自己提供了無參建構函式,則會調用父類自己的無參建構函式。

 

    5. 在建立子類對象時候,如果子類的建構函式沒有顯示調用父類的建構函式且父類只定義了自己的有參建構函式,則會出錯(如果父類只有有參數的構造方法,則子類必須顯示調用此帶參構造方法)。

 

6. 如果子類調用父類帶參數的構造方法,需要用初始化父類成員對象的方式,比如:

#include <iostream.h>

  class animal
  {
  public:
    animal(int height, int weight)
    {
      cout<<"animal construct"<<endl;
    }
    …
  };

  class fish:public animal
  {
  public:
    fish():animal(400,300)
    {
      cout<<"fish construct"<<endl;
    }
    …
  };
  void main()
  {
    fish fh;
  }

在fish類的建構函式後,加一個冒號(:),然後加上父類的帶參數的建構函式。這樣,在子類的建構函式被調用時,系統就會去調用父類的帶參數的建構函式去構造對象。這種初始化方式,還常用來對類中的常量(const)成員進行初始化,如下面的代碼所示:

class point
  {
  public:
     point():x(0),y(0)
  private:
     const int x;
     const int y;
  };

 

這樣的編寫方式有利於尋找並加以修改。

軟體工程課設反覆式開發法第五至七天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.