1. 程式人生 > >C++學習筆記(二)——構造與析構

C++學習筆記(二)——構造與析構

建構函式:在建立物件時執行的函式

特性:

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;
}