前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:可樂司機
建構式是C++里面的基礎內容,特別重要,如果你剛學C++不久,不是很懂,建議可以先去小編的C++交流.裙 :九起久傘吧起傘留傘(數字的諧音)轉換下可以找到了,里面有最新C++教程專案從0到進階,有問題多請教里面的人,進步更快哦
1. 定義
與類同名、無回傳值型別的成員函式,
解構式是物件創建的一部分,在創建物件時,會被自動呼叫;創建物件后,解構式就不能再被呼叫
默認解構式:不帶引數,或者所有引數都有默認值的的解構式,解構式可以多載,
類的解構式一般是公開的,但是有時也把解構式宣告為私有的(如單例模式中就把解構式宣告為私有的),其作用是限制創建該類物件的范圍,
2. 呼叫
根據引數進行多載,決定呼叫哪個解構式,
3. 成員初始化表
對于常量資料成員和參考資料成員(某些靜態成員除外),不能在宣告它們時進行初始化,也不能采用賦值操作對它們初始化,
class A
{
int x;
const int y=1;//Error
int &z=x;//Error
public:
A()
{
x=0;//OK
y=1;//Error,y是常量成員,其值不能改變
}
}
它們的初始化要在成員初始化表中進行,
class A
{
int x;
const int y;
int& z;
public:
A(): z(x),y(1)
{
x=0;
}
}
或者
class A
{
int x;
const int y;
int& z;
public:
A(): x(0),z(x),y(1)
{
}
}
成員初始化表的次序不決定它們的初始化次序,它們的初始化次序由它們在類中的定義的次序決定,如果你剛學C++不久,不是很懂,建議可以先去小編的C++交流.裙 :九起久傘吧起傘留傘(數字的諧音)轉換下可以找到了,里面有最新C++教程專案從0到進階,有問題多請教里面的人,進步更快哦
如果類中含有常量資料成員或參考資料成員,一定要定義帶有成員初始化表的建構式,否則編譯程式生成的默認建構式是沒有成員初始化表的,這樣的類是不能創建物件的,
在創建包含成員物件的物件時,首先呼叫本身類的建構式,在進入本身類的解構式之前,將會去呼叫成員物件類的建構式,然后再執行本身建構式的函式體(在繼承中,要先呼叫基類的建構式,再呼叫成員物件類的建構式,最后執行自己的函式體),即使成員物件初始化表為空,只要類中有成員物件,編譯程式就會生成對成員物件建構式的呼叫指令,只不過它呼叫的默認建構式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80738.html
標籤:C++
下一篇:c++--語言本身
