(一)建構函式
1.建構函式:cmystring(){}
(1)函式名與類名相同 無返回值
物件構造時系統自動呼叫相應的建構函式
建構函式可以過載 可以在類內或者類外定義(指定作用域即可)
(2)初始化列表比函式內初始化更高效
對於自定義型別,在初始化時系統會自動生成初始化列表,即系統會先走一遍初始化列表,
然後在呼叫函式體內的初始化,也就是初始化了兩遍;所以初始化列表更快速
(3)const修飾的常量,必須在定義時初始化
引用變數,必須在定義時初始化 並且只能初始化一次
沒有預設建構函式的自定義的成員變數
(4)應用程式可以自己提供建構函式,如果不提供 系統將呼叫預設的建構函式
在初始化物件的成員變數時,要注意在堆上分配記憶體的情況
(二)析構函式
2.析構函式:~cmystring(){}
函式名與類名相同 無返回值 無引數列表
在函式名前加上'~'字元
析構函式主要是清理物件所占用的額外資源,而不是物件的記憶體空間
系統會在return之後自動呼叫析構函式 在出「}」時屬於主函式棧幀回退
析構函式不能過載
(三)拷貝建構函式
3.拷貝建構函式cmystring(const cmystring& rhs ){}
(1)用同型別已經存在的物件構造同型別的新的物件
(2)如果預設的拷貝建構函式會發生淺拷貝現象 需要自己提供
(3)拷貝構造函式引數不能值傳遞,必須傳引用
(4)值傳參的迴圈遞迴 cmystring(const cmystring rhs )
呼叫函式的步驟:先初始化形參,傳形參;
呼叫函式
eg:cmystring str1 = str2 --->cmystring str1(str2);
初始化形參:cmystring rhs = str2;
呼叫函式:cmystring(cmystring rhs);
初始化形參:cmystring rhs = str2;
呼叫函式:cmystring(cmystring rhs);
一直迴圈死遞迴下去;
(5)傳引用cmystring(const cmystring& rhs ){}
eg:cmystring str1 = str2 --->cmystring str1(str2);
引用str2物件,this指標指向新生成的物件str1,將引用的物件的內容拷貝乙份給this指標指向的新物件
(6)拷貝建構函式要避免淺拷貝現象
eg:cmystring str1 = str2
str2和str1都指向同一塊記憶體 如果兩者中任意乙個提前釋放資源,都會造成另乙個成為野指標
(7)系統缺省會提供 但是涉及到淺拷貝時需要應用程式自己提供
(8)傳參傳const的原因:不修改引用的物件的內容
(四)賦值運算子過載函式
4.賦值運算子過載函式:cmystring& operator=(const cmystring& rhs)
(1)用同型別已經存在的物件賦值給另乙個已經存在且型別相同的物件
(2)如果預設的賦值運算子過載函式會發生淺拷貝現象 需要自己提供
(3)五個不支援的運算子過載:sizeof/::/?:/./.*
(4)運算子過載後不能改變運算子的優先順序和結合性
(5)傳參傳const的原因:不修改引用的物件的內容
(五)取位址操作符的過載函式
cmystring *operator&()
(六)const修飾的取位址操作符的過載函式
const cmystring* opreator&()const
**示例如下:
//**如下:c++預設的六個函式
/* class cmystring
const cmystring* operator &()const
void show()
private:
char *m_pdata;
};//建構函式
cmystring::cmystring( char *pdata )
//拷貝建構函式:用同型別已經存在的物件構造同型別的新物件
cmystring::cmystring(const cmystring& str)
//賦值運算子過載函式:用乙個同型別已經存在的物件複製給另乙個同型別已經存在的物件
cmystring& cmystring:: operator = ( const cmystring &str)
//析構函式:釋放物件所占用的額外資源 比如堆上資源
cmystring::~cmystring()
}*/
C 的六個預設函式
c 有六個預設函式 分別是 1 default建構函式 2 預設拷貝建構函式 3 預設析構函式 4 賦值運算子 5 取值運算子 6 取值運算子const 這兩個類的效果相同 class person class person deafault建構函式 person const person 預設拷貝...
c 中的六個預設函式
1.c 三大特徵 封裝 繼承 多型 1.public 任意位置訪問 2.protected 本類,子類類中訪問 3.private 本類類中訪問 2.struct class 3.this thiscall 類中普通的成員方法中有預設的引數 this this student const 普通成員方...
C 中六個預設的函式
c 物件導向特點 繼承 封裝 多型 任務是初始化物件的記憶體空間。注意 新物件被建立,由編譯器自動呼叫建構函式,且在物件的生命週期之內只調動一次。不可以手動呼叫,類的成員方法依賴物件呼叫,即在建構函式完成後 建構函式的名字和類名相同,沒有返回值 建構函式可以過載,實參決定了呼叫哪個建構函式 沒有顯示...