c++建構函式,拷貝建構函式,解構函式,賦值運算子過載
阿新 • • 發佈:2019-01-09
建構函式:
是一個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內只且只調用一次,以保證每個資料成員都有一個合適的初始值。<strong><span style="font-size:24px;color:#009900;">class Cdate { public: Cdate(int year,int month, int day) { _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }</span></strong>
建構函式特點: 1.函式名和類名相同; 2.沒有返回值; 3.不能用const修飾;
拷貝建構函式:
只有單個形參,而且該形參是對本類型別物件的引用(常用const修飾),這樣的建構函式稱為拷貝建構函式。拷貝建構函式是特殊的建構函式,建立物件時使用已存在的同類物件來進行初始化,由編譯器自動呼叫。1、它是建構函式的過載。class CDate { public: CDate() {} CDate( const int year, const int month, const int day) { _iYear = year; _iMonth = month; _iDay = day; } CDate( const CDate& date) { _iYear = date._iYear; _iMonth = date._iMonth; _iDay = date._iDay; } private: int _iYear; int _iMonth; int _iDay; };
2、它的引數必須使用同類型物件的引用傳遞。
3、如果沒有顯式定義,系統會自動合成一個預設的拷貝建構函式。預設的拷貝建構函式
會依次拷貝類的資料成員完成初始化。
【使用場景】
1、物件例項化物件
2、傳值方式作為函式的引數
3、傳值方式作為函式返回值(return data)
解構函式:
解構函式:與建構函式功能相反,在物件被銷燬時,由編譯器自動呼叫,完成類的一些資源清理和汕尾工作。a、解構函式在類名(即建構函式名)加上字元~。class CArray { public: CArray(size_t capacity) : _capacity(capacity) { _pData = ( int*)malloc(capacity*sizeof (int)); _size = 0; } ~CArray() { if (NULL != _pData) { free(_pData); _pData = NULL; } _size = 0; _capacity = 0; } private: int* _pData; size_t _size; size_t _capacity; };
b、解構函式無引數無返回值。
c、一個類有且只有一個解構函式。若未顯示定義,系統會自動生成預設的解構函式。
d、物件生命週期結束時,C++編譯系統系統自動呼叫解構函式。
e、注意解構函式體內並不是刪除物件,而是做一些清理工作。