11 2 4重學C 之 構造函式呼叫規則

2021-10-22 06:59:47 字數 885 閱讀 4095

#include#include#includeusing namespace std;

/* 4.2 物件的初始化和清理

4.2.4 構造函式呼叫規則

預設情況下建立乙個類,c++編譯器至少給該類新增3個函式:

預設建構函式,無參,函式體為空

預設析構函式,無參,函式體為空

預設拷貝建構函式,對屬性進行值拷貝

規則:若使用者定義有參建構函式,則編譯器不再提供預設無參構造,但會提供預設拷貝構造

若使用者定義拷貝建構函式,則編譯器不再提供其他普通建構函式

*/class person

person(int _age)

/*person(const person & p)

*/~person()

int age;

};void test1()

/* person(const person & p)未注釋時列印

person 無參預設建構函式

person 拷貝建構函式

p2的年齡:18

person 析構函式

person 析構函式

person(const person & p)注釋時列印

person 無參預設建構函式

p2的年齡:18

person 析構函式

person 析構函式

原因分析

注釋後,編譯器自動提供預設的拷貝建構函式,對屬性進行值拷貝,即執行age = p.age

10 3重學C 之 函式過載

includeusing namespace std 三 函式提高 3.3 函式過載 函式名可以相同以提高復用性 函式過載需滿足的條件 同意作用域下 函式名相同 函式引數型別不同 個數不同 順序不同 void func void func int a void func double a void ...

11 3 4重學C 之 const修飾成員函式

include include includeusing namespace std 4.3.4 const修飾成員函式 常函式 成員函式後加const 修飾的是this指標,令指標指向的值也不可修改 常函式內不可修改成員屬性 成員屬性宣告時加關鍵字mutable後,在常函式中依然可以修改 常物件 ...

11 2 8重學C 之 靜態成員

include include includeusing namespace std 4.2 物件的初始化和清理 4.2.8 靜態成員 靜態成員變數 所有物件共享同乙份資料 在編譯階段分配記憶體 類內宣告,類外初始化 靜態成員函式 所有物件共享同一函式 靜態成員函式只能訪問靜態成員變數 class ...