///類的資料成員是私有的,所以不能使用常規的賦值方法,像結構體那種的。。。。。。
///一般來講。最好在建立物件的同時,對它進行初始化。
///例如: stock gift; gift.buy(10, 22.22); 這種情況下,company 沒被賦值。
///程式宣告物件時, 自動呼叫建構函式。
///一定不能將類成員名稱用作建構函式的引數名。
///建構函式的引數表示的不是類成員,而是賦給類成員的值。
/*stock::stock(const string & co, long n, double pr)
else
shares = n;
share_val = pr;
set_tot();}*/
///有兩種使用建構函式初始化物件的方式;
/// 顯式:stock garment = stock("furry mason", 50, 2.5);
///隱式:stock garment("furry mason", 50, 2.5);
///每次建立類物件(甚至使用new動態分配記憶體)時,c++都是用類建構函式。
///如: stock *pstock = new stock("shinee", 18, 19.0);
///一般來講,使用物件來呼叫方法: stock1.show();
///無法使用物件來呼叫建構函式,因為在建構函式構造出物件之前,
///物件是不存在的。
///預設建構函式是在為提供顯式初始值時,用來建立物件的
///建構函式。若未提供任何建構函式,c++將自動提供預設建構函式。
///stock類的預設建構函式可能如下:
///stock::stock(){}
///為類定義了建構函式後,就必須為其提供預設建構函式。
///定義預設建構函式的方式有兩種:
///一種是給已有建構函式的所有引數提供預設值:
///stock(const string & co = "error", int n = 0, double pr = 0.0);
///另一種方式是通過函式過載來定義另乙個建構函式————乙個沒有引數的建構函式。
///stock();
///使用者定義的預設建構函式通常給所有成員提供隱式初始值。
///在設計類時,通常應該提供對所有類成員做隱式初始化的預設建構函式。
/*stock::stock()
*////stock類的析構函式為~stock();
///建構函式和析構函式都沒有返回值和宣告型別。
///但是呢, 和建構函式不同,析構函式沒有引數。
///預設建構函式無引數(default constructor)
/*stock::~stock()
*//*
stock stock2 = stock("boffo objects", 2, 2.0);
stock1 = stock("nifty foods", 10, 50.0);
///第一條語句是初始化,它建立有指定值的物件,可能會建立臨時物件,
///(也可能不會),第二條語句是賦值,總會導致在賦值前建立乙個臨時物件。
///通過初始化或賦值的方式來設定物件的值,通常初始化的效率更高。
*////c++11列表初始化:
///stock hot_hip = ;
///stock jock;
///stock temp{};
///建立jock時,第二第三個引數將為預設值0和0.0.
///第三個宣告與預設建構函式匹配
///要注意const的使用,在show那裡。
///接受乙個引數的建構函式允許使用賦值語法將物件初始化為乙個值。
///若建立物件時沒進行顯式初始化,則需呼叫預設建構函式。
///預設建構函式沒有引數,如果有, 則需提供預設值。
///未被初始化的物件,程式使用預設建構函式來建立。
///每個類都只能有乙個析構函式。new ~~~ delete.
/
#include #include"stock10.h"
using namespace std;
stock::stock()
stock::stock(const string & co, long n, double pr)
else
shares = n;
share_val = pr;
set_tot();
}///class destructor
stock::~stock()
///other methods
void stock::buy(long num, double price)
else
}void stock::sell(long num, double price)
else if (num > shares)
else
}void stock::update(double price)
/*void stock::show()
public:
stock();
stock(const std::string & co, long n = 0,double pr = 0.0);
~stock();
void buy(long num, double price);
void sell(long num, double price);
void update(double price);
void show();
};#endif // stock10_h_included
/
#include#include"stock10.h"
using namespace std;
int main()
return 0;
}///好吧 我承認我的注釋都是最通俗的語言~~~
/*using constructors to create new objects
constructor using nanosmart called
company: nanosmart shares: 12
shares price: $ 20.000 total worth: $ 240.00
constructor using boffo objects called
company: boffo objects shares: 2
shares price: $ 2.000 total worth: $ 4.00
assigning stock1 to stock2:
listening stock1 and stock2:
company: nanosmart shares: 12
shares price: $ 20.000 total worth: $ 240.00
company: nanosmart shares: 12
shares price: $ 20.000 total worth: $ 240.00
using a constructor to reset an object
constructor using nifty foods called
bye, nifty foods!
constructor using hhjh called
constructor using aaa called
bye, aaa!
revised stock1:
company: nifty foods shares: 10
shares price: $ 50.000 total worth: $ 500.00
done
bye, aaa!
bye, nanosmart!
bye, nifty foods!
process returned 0 (0x0) execution time : 0.724 s
press any key to continue.
*/
類 建構函式和析構函式
一.類 類定義的變數就是物件 1.建構函式 只有 建立物件的時候系統自動呼叫的函式 初始化物件 1 建構函式名與類名相同 2 建構函式沒有返回值 3 建構函式可以過載 注意 關於建構函式 1 如果建構函式被呼叫了,則一定有乙個新物件被建立了 2 如果有乙個新物件被建立,則一定有乙個建構函式被呼叫了 ...
類的建構函式和析構函式
1.把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。2.建構函式 析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首 以示區別。3.建構函式與析構函式都沒有返回值型...
類的建構函式和析構函式
1.類建構函式和析構函式的特點 2.類建構函式 專門用於構造新物件,將值賦予它們的資料成員。建構函式是一種特殊的類成員函式,在建立類物件時被呼叫。建構函式的名稱和類名相同,但通過函式過載,可以建立多個重名的建構函式,條件是每個函式的引數列表都不同。1 預設建構函式 每個類必須有乙個建構函式,若未顯示...