class time
time(int hour,int minute,int second)//有參的建構函式
time(int hour=9,int minute=54,int second=23)//全預設建構函式
time(int hour,int minute=12,int second=30) //半預設建構函式
private:
int _hour;
int _minute;
int _second;
}void test()
拷貝建構函式
拷貝建構函式是用已有的物件初始化新的物件,是特殊的建構函式。
專屬特徵
1>,拷貝建構函式是建構函式的過載;
2>,如果拷貝建構函式未定義,編譯器會自動生成預設的拷貝建構函式,會依次拷貝類成員,稱為淺拷貝或值拷貝;
3>,拷貝建構函式的須用引用進行傳參,如:time(const time& t)
.
疑問:如果採用值傳遞會出現什麼情況?
傳值方式會引發無窮遞迴呼叫,這是為什麼呢……
class time
time(time t)//值傳遞
private:
int _hour;
int _minute;
int _second;
}void test()
當t2初始化的時候呼叫了t2的拷貝建構函式,由於是值傳遞方式,編譯器會給t分配一塊臨時空間,呼叫自身的拷貝建構函式把t1資料成員的值傳給t,當呼叫自身的拷貝建構函式的時候又因為是值傳遞又會呼叫自身的拷貝建構函式,一直是值傳遞就會一直呼叫拷貝建構函式,無窮呼叫.析構函式
析構函式是在物件生命週期結束的時候自動呼叫的乙個成員函式,與建構函式的功能相反。
專屬特徵
1>,析構函式無引數,無返回值,函式名與類名相同前面加~;
2>,如果沒有定義析構函式,編譯器會自動生成預設的析構函式,且乙個類只能有乙個析構函式,在物件生命週期結束的時候自動呼叫;
3>,析構函式的作用不是刪除物件,而是撤銷物件占用的記憶體之前做一些清理工作,可以將這部分記憶體分配給其他新物件;
4>,一般情況下,先呼叫的建構函式,其對應的析構函式會最後被呼叫。
呼叫析構函式以後,還輸出了物件t的資料成員值,說明析構函式不釋放物件。
c 類的預設成員函式
類的組成包括資料成員與成員函式。在類中一共有有六個預設成員函式,建構函式 拷貝建構函式 析構函式 賦值操作符過載 取位址操作符過載 const修飾的取位址操作符過載 利用乙個例項 日期類 進行舉例 先是定義乙個日期類 class date 這就是乙個簡單的類定義。下面依次介紹各個預設成員函式 一.建...
C 類的預設成員函式
class test 這些函式只有在需要的時候才會產生,空類占用 個位元組。類為了保護資料成員,其所有資料成員都預設是私有的 private 這也就意味著程式只能通過類裡面的函式提供介面來訪問資料成員。例如,下面程式用日期類建立了乙個物件,並進行初始化 class date int main 為了解...
類和物件(預設成員函式)
建構函式不是開空間建立物件,而是初始化物件,更嚴謹的說是賦初值 特性初始化列表 class date private int year int month int day explicit 析構函式不是完成對物件的銷毀,區域性物件銷毀由編譯器完成,而在物件銷毀時會呼叫析構函式,完成類的一些資源清理工...