十-----對象和類

十-----對象和類

  1. 程序員使用私有成員函數來處理不屬於公有接口的實現細節
  2. 內聯函數定義部分加上inline,聲明部分不須要
  3. 在OOP中,調用成員函數被稱爲發送消息 "send message"
  4. 自定義構造函數的參數名不能與類成員名相同,爲了使得參數名更直觀,一般在數據成員名前加前綴m_,或者加後綴_,以免混亂
  5. 沒有定義構造函數時,編譯器會自動提供默認構造函數;可是一旦定義了非默認構造函數,就必須再手動定義一個默認構造函數
  6. 默認構造函數有兩種定義方法,一種是無參,另外一種是有參,但全部參數都有默認值。一般,無論有無參數,都應該用默認值初始化全部的參數。即無參的默認構造函數也應該在函數體內賦予數據成員默認值。兩種定義方法不能同時使用
//構造函數隱式與顯示調用
class food = class( "Ok",30,4.76 );
class food( "Ok",30,4.76 );
class *ptr = new class( "Ok",30,4.76 );

//默認構造函數隱式與顯示調用
class good;
class good = class( );
class *pre = new class;
  1. 析構函數無參
  2. 若是構造函數使用了new,析構函數必須調用delete
  3. 只要類方法不修改調用對象,就應該申明爲const
void show( ) const;
  1. this指針
const Stock & Stock :: topval ( const Stock & s ) const
{
    if (s.total_val > total_val)
        return s;
    else
        return *this; 
}
//第一個const表示返回類型爲const引用
//第二個const表示函數不能修改顯示調用的對象
//第三個const表示函數不能修改隱式調用的對象
  1. 對象數組
const int STKS = 3;
Stock food [STKS] = {
    Stock("NanoSmart", 12, 20.0),
    Stock( ),
    Stock("Monolithic Obelisks", 130, 3.25)
};

//訪問
food[0], food[1], food[2]
  1. 要使用做用域爲類的常量,即常量由全部對象共享。
    直接在數據成員中定義const變量是不可行的,此時並無實例化
    有兩種方法,一:枚舉; 二:static靜態數據類型
private:
    enum{ ok = 100 };
                    
private:
    static const int ok = 100;
相關文章
相關標籤/搜索