天天看點

c++學習筆記之構造函數和析構函數

一、構造函數:當一個類的對象被聲明時,構造函數将自動調用,以便對該對象的某些或全部成員變量進行初始化。

需要注意以下幾點:

1、必須與類同名。

2、無任何傳回值,包括void。

3、使用無參構造函數來初始化對象,聲明對象後不使用括号。

4、假如類已定義了一個或多個參數的構造函數,但沒有包括預設構造函數的定義(既沒有無參構造函數),那麼該類是沒有預設構造函數的。

#include <iostream>
using namespace std;
class Day
{
public:
    Day();
    Day(int monthValue,int dayValue);
    Day(int monthValue);
    void getDay();
private:
    int month;
    int day;
};
Day::Day()
{
    cout<<"調用無參構造函數;"<<endl;
}
Day::Day(int monthValue,int dayValue)
{
    cout<<"調用兩個參數的構造函數;"<<endl;
    month=monthValue;
    day=dayValue;
}
Day::Day(int monthValue)
{
    cout<<"調用一個參數的構造函數;"<<endl;
    month=monthValue;
}
void Day::getDay()
{
    cout<<"調用擷取日期函數;";
    cout<<month<<endl;
}
int main()
{

    Day d1;
    d1.getDay();
    Day d2(3);
    d2.getDay();
    Day d3(2,12);
    d3.getDay();
    return 0;
}
           

二、析構函數:是一個特殊的成員函數,當 一個類的對象超出其作用域時,将會自動調用類的析構函數,即用于删除所有給對象建立的動态配置設定變量。

需要注意以下幾點:

1、析構函數也與類名相同,同時在類名前面加~符号。

2、析構函數沒有傳回類型,包括void。

3、析構函數沒有參數。

4、一個類隻能包含一個析構函數,不能将類的析構函數進行重載。

繼續閱讀