C++學習筆記(二)——構造與析構
阿新 • • 發佈:2019-02-19
建構函式:在建立物件時執行的函式
特性:
1.建構函式與類名相同
2.建構函式無返回型別(必須沒有)
3.建立物件時被呼叫(類似於初始化)
4.建構函式可以有引數(建立時直接傳入)
形如:A();
以下是一個建構函式的例子:
#include <stdio.h> #include <iostream> using namespace std; class A { private: int i; //定義成員變數 public: void f(); A(); //建構函式的定義 }; void A::f() { int j=10; //定義並對區域性變數賦值 i=10; //對成員變數賦值 } //建構函式 A::A() { i=0; cout << "This=" << this << endl; //在建構函式中輸出this指標 //tip:this指標是指向類的地址的一個內部指標 } int main() { A a; //宣告一個類A變數a a.f(); //呼叫a中的f()函式 return 0; }
解構函式:在刪除物件前執行的函式
定義時與建構函式類似,唯一的差別是在函式前加一個~,而且不能有引數
形如:~A();
以下是一個解構函式的例子:
#include <stdio.h> #include <iostream> using namespace std; class A { private: int i; //定義成員變數 public: void f(); A(); //定義建構函式 ~A(); //定義解構函式 }; void A::f() { int j=10; //定義並對區域性變數賦值 i=10; //對成員變數賦值 } A::A() { cout << "This class has been created." << endl; //建構函式建立時呼叫 } A::~A() { cout << "This class is deleted." << endl; //解構函式結束時呼叫 } int main() { { A a; //宣告一個類A變數a //建構函式將在此呼叫 a.f(); //呼叫a中的f()函式 } //解構函式將在此呼叫 return 0; }