標籤:調用 let 自動 首碼 相同 編譯器 預設值 靜態 參數
10-對象和類
- 程式員使用私人成員函數來處理不屬於公有介面的實現細節
- 內嵌函式定義部分加上 inline,聲明部分不需要
- 在OOP中,調用成員函數被稱為發送訊息 "send message"
- 自訂建構函式的參數名不能與類成員名相同,為了使得參數名更直觀,通常在資料成員名前加首碼m_,或者加尾碼_,以避免混亂
- 沒有定義建構函式時,編譯器會自動提供預設建構函式;但是一旦定義了非預設建構函式,就必須再手動定義一個預設建構函式
預設建構函式有兩種定義方法,一種是無參,另一種是有參,但所有參數都有預設值。通常,不管有無參數,都應該用預設值初始化所有的參數。即無參的預設建構函式也應該在函數體內賦予資料成員預設值。兩種定義方法不能同時使用
//建構函式隱式與顯示調用 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;
- 解構函式無參
- 如果建構函式使用了new,解構函式必須調用delete
只要類方法不修改調用對象,就應該申明為const
void show( ) const;
this指標
const Stock & Stock :: topval ( const Stock & s ) const { if (s.total_val > total_val) return s; else return *this; } //第一個const表示傳回型別為const引用 //第二個const表示函數不能修改顯示調用的對象 //第三個const表示函數不能修改隱式調用的對象
對象數組
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]
要使用範圍為類的常量,即常量由所有對象共用。
直接在資料成員中定義const變數是不可行的,此時並沒有執行個體化
有兩種方法,一:枚舉; 二:static待用資料類型
private: enum{ ok = 100 }; private: static const int ok = 100;
10.對象和類