C++廚房2_建構子vs解構子



建構子 (constructor): 是產失物件時,自動被呼叫出的特殊函數。

建構子必為public,若省略不寫或者寫private,當你在生成物件時就會造成編譯錯誤!!!!




建構子的宣告及定義




建構子 以及 類別名稱  指定為 相同名字!!!!

建構子之定義 無傳回值 更 不用指定void型





解構子 (destructor): 當物件任務結束時,會自動被呼叫出的特殊成員函數。

解構子必為public,若省略不寫或者寫private,就會造成編譯錯誤!!!!


解構子的宣告及定義






構子 以及 類別名稱  指定為 相同名字!!!!

解構子之定義也 無傳回值 更 不用指定void型


而且只能在類別中定義一個!!!!!

本次學習code



#include<iostream>
using namespace std;

class orangeBox
{
    public:        
        /*成員函數*/
        void Add(int addorange);//橘子不夠需要添加
        void Del(int delorange);//橘子爛了要取出
        void Empty();//橘子箱空了
        int GetTotal()//用成員函數GetTotal()求出一箱橘子總共多少顆
        {
            return total; // 成員函數本身的定義
        }
        orangeBox();  //建構子的宣告
        ~orangeBox();  //解構子的宣告
    protected:
    private:
        /*成員變數*/
        int total; 
};
//建構子定義
orangeBox::orangeBox() //建構子無傳回值,也不指定void型
{
    total = 0; //初始化成員變數
}
//解構子定義
orangeBox::~orangeBox() // 解構子
{
    cout << "物件結束" << endl;
    system("PAUSE");
}

void orangeBox::Add(int addorange)
{
    total += addorange;
}

void orangeBox::Del(int delorange) 
{
    total -= delorange;
}

void orangeBox::Empty()
{
    total = 0;
}
int main(int argc, char**argv)
{
    orangeBox myOrg1;
    
    //myOrg1.Empty();
    myOrg1.Add(5);
    myOrg1.Del(2);
    cout << myOrg1.GetTotal();

    system("PAUSE");
    return 0;
}



留言

這個網誌中的熱門文章

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header

經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題