1. 程式人生 > >類設計總結

類設計總結

1.編譯器生成的成員函式

    1)預設建構函式

沒有引數/所有引數都有預設值。

a.能呼叫基類的預設建構函式.

b.呼叫本身是物件的預設建構函式。

 

      2建構函式不被繼承

       3友元函式不能被繼承。因為不是類成員。

      3基類應提供一個虛解構函式

      4explicit

禁止隱式轉換。

2.值傳遞 引用傳遞

   1物件作為引數時,用引用傳遞。

      原因:值傳遞生成臨時拷貝,即呼叫拷貝建構函式-解構函式,浪費。

                   

     2)繼承使用虛擬函式時,引數如果是基類引用,則可以傳入子類。但物件時引數則不可以。

 

3.值返回和引用返回

 1)返回物件 ,會生成副本。即會產生呼叫拷貝構造,析構的時間。

  2)不能返回 函式中臨時物件的引用。函式結束時臨時物件會消失。

      總結:若返回臨時物件,則不用引用,其餘用引用。

 

4.使用const

a.方法不改引數

voidfun(const A & a)

此時引數a不能傳遞給另一個函式,除非函式引數也是const.

b.方法不修改呼叫它的物件。

voidA::fun() const

c.引用或指標返回值不能用於修改物件中的資料。

const A & A::fun(const A &s) const

{

if()

   return s;

else

   return *this;

 

}

因為sthis都為const,則返回值也必須為const.

 

5.子類友元函式使用基類友元函式

強轉:子類指標或引用轉換成基類指標或引用。