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;
}
留言
張貼留言