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) { }}成員初始化表的次序不決定它們的初始化次序,它們的初始化次序由它們在類中的定義的次序決定。 如果類中含有常量資料成員或引用資料成員,一定要定義帶有成員初始化表的建構函式,否則編譯程式生成的預設建構函式是沒有成員初始化表的,這樣的類是不能建立物件的。 在建立包含成員物件的物件時,首先呼叫本身類的建構函式,在進入本身類的解構函式之前,將會去呼叫成員物件類的建構函式,然後再執行本身建構函式的函式體(在繼承中,要先呼叫基類的建構函式,再呼叫成員物件類的建構函式,最後執行自己的函式體)。即使成員物件初始化表為空,只要類中有成員物件,編譯程式就會生成對成員物件建構函式的呼叫指令,只不過它呼叫的預設建構函式。學習資料:有道雲筆記————————————————版權宣告:本文為CSDN博主「可樂司機」的原創文章,遵循 CC
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) { }}成員初始化表的次序不決定它們的初始化次序,它們的初始化次序由它們在類中的定義的次序決定。 如果類中含有常量資料成員或引用資料成員,一定要定義帶有成員初始化表的建構函式,否則編譯程式生成的預設建構函式是沒有成員初始化表的,這樣的類是不能建立物件的。 在建立包含成員物件的物件時,首先呼叫本身類的建構函式,在進入本身類的解構函式之前,將會去呼叫成員物件類的建構函式,然後再執行本身建構函式的函式體(在繼承中,要先呼叫基類的建構函式,再呼叫成員物件類的建構函式,最後執行自己的函式體)。即使成員物件初始化表為空,只要類中有成員物件,編譯程式就會生成對成員物件建構函式的呼叫指令,只不過它呼叫的預設建構函式。學習資料:有道雲筆記————————————————版權宣告:本文為CSDN博主「可樂司機」的原創文章,遵循 CC