c++——對象的構造和析構函數、構造函數的分類及調用
1構造函數和析構函數的概念
有關構造函數
1構造函數定義及調用
1)C++中的類可以定義與類名相同的特殊成員函數,這種與類名相同的成員函數叫做構造函數;
2)構造函數在定義時可以有參數;
3)沒有任何返回類型的聲明。
2構造函數的調用
自動調用:一般情況下C++編譯器會自動調用構造函數
手動調用:在一些情況下則需要手工調用構造函數
有關析構函數
3)析構函數定義及調用
1)C++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數
語法:~ClassName()
2)析構函數沒有參數也沒有任何返回類型的聲明
3)析構函數在對象銷毀時自動被調用
4)析構函數調用機制
C++編譯器自動調用
構造函數的分類及調用
C++編譯器給程序員提供的對象初始化方案,高端大氣上檔次。
//有參數構造函數的三種調用方法 class Test { private: int a; int b;
public:
//無參數構造函數 Test() { ; }
//帶參數的構造函數 Test(int a, int b) { ; } //賦值構造函數 Test(const Test &obj) { ; }
public: void init(int _a, int _b) { a = _a; b = _b; } }; |
1無參數構造函數
調用方法: Test t1, t2;
2有參構造函數
有參構造函數的三種調用方法
//有參數構造函數的三種調用方法 class Test5 { private: int a; public: //帶參數的構造函數 Test5(int a) { printf("\na:%d", a); } Test5(int a, int b) { printf("\na:%d b:%d", a, b); } public: };
int main55() { Test5 t1(10); //c++編譯器默認調用有參構造函數 括號法 Test5 t2 = (20, 10); //c++編譯器默認調用有參構造函數 等號法 Test5 t3 = Test5(30); //程序員手工調用構造函數 產生了一個對象 直接調用構造構造函數法
system("pause"); return 0; } |
c++——對象的構造和析構函數、構造函數的分類及調用