一,建構函式
特性:函式名與類名相同。
無返回值。
物件例項化時編譯器自動呼叫對應的建構函式。
建構函式可以過載。
class date
date()
void init(int year, int month, int day) // void init(date* this, int year, int month, int day)
void print() // void print(date* this)
private:
int _year;
int _month;
int _day;
};int main()
5、如果類中沒有顯式定義建構函式,則c++編譯器會自動生成乙個無參的預設建構函式,一旦使用者顯式定義編譯器將不再生成。
class time
private:
int _hour;
int _minute;
int _second;
};class date
*/ void print() // void print(date* this)
private:
int _year;
int _month;
int _day;
time _t;
};int main()
6、無參的建構函式和全預設的建構函式都稱為預設建構函式,並且預設建構函式只能有乙個。注意:無參建構函式、全預設建構函式、我們沒寫編譯器預設生成的建構函式,都可以認為是預設建構函式。
預設建構函式
class date
*/ date(int year, int month, int day)
// 更好的方式->全預設
/*date(int year = 0, int month = 1, int day = 1)
*/ void print() // void print(date* this)
private:
int _year;
int _month;
int _day;
};int main()
二、析構函式
特性:析構函式名是在類名前加上字元 ~。
無引數無返回值。
乙個類有且只有乙個析構函式。若未顯式定義,系統會自動生成預設的析構函式。
物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。
class date
void print() // void print(date* this)
~date()
private:
int _year;
int _month;
int _day;
};class stack
~stack()
private:
int* _a;
int _size;
int _capacity;
};int main()
淺拷貝:直接複製記憶體
深拷貝:當成員中有指向堆的指標,就必須重新給該指標分配空間,然後將目標物件指標所指空間的內容拷貝到新分配的空間。(如果不這樣做,會導致兩個指標指向同一片空間,從而在析構中多次釋放)。
三、const成員函式
const物件可以呼叫其他的const函式;
非const物件可以呼叫非const成員函式和const成員函式;
const成員函式內可以呼叫其他的const成員函式;
非const成員函式內可以呼叫其他的const成員函式和非const成員函式。
2 類和物件
類即類別 種類,是物件導向設計最重要的概念,從一小節我們得知物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體。那麼問題來了,先有的乙個個具體存在的物件 比如乙個具體存在的人 還是先有的人類這個概念,這個問題需要分兩種情況去看 世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人...
2 類和物件
類是一種資料型別,設計時系統不為類分配儲存空間,所以不能去訪問類裡面的資料成員,也不能去初始化類裡 面的資料成員。只能訪問這個類所產生的物件的資料成員 前提是共有 eg 類相當於圖紙是描述和規劃的藍圖,而物件就是圖紙例項化後的實體物件 樓房 計算機不給類分配記憶體,只給物件分配記憶體。建立物件有兩種...
類和物件2
物件的定義 物件等同於資料加操作 物件 資料 操作 屬性 filed 方法 method 類 類是產生物件的模板 圖紙 學會定義類要解決下面兩個問題 1.如何使用定義好的類,例項化出物件 2.學會使用物件 通過引用 1.操作物件中的屬性 2.呼叫物件關聯的方法 一.如何定義類 public clas...