類的建構函式和析構函式

2021-07-12 06:52:54 字數 4110 閱讀 4425

///類的資料成員是私有的,所以不能使用常規的賦值方法,像結構體那種的。。。。。。

///一般來講。最好在建立物件的同時,對它進行初始化。

///例如: 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 預設建構函式 每個類必須有乙個建構函式,若未顯示...