建構函式
對於類物件成員的初始化我們始終是建立成員函式然後手工呼叫該函式對成員進行賦值的,那麼在c++中對於類來說有沒有更方便的方式能夠在物件建立的時候就自動初始化成員變數呢,這一點對操作保護成員是至關重要的,答案是肯定的。關於c++類成員的初始化,有專門的建構函式來進行自動操作而無需要手工呼叫。
類建構函式,專門用於構造新物件、將值賦給它們的資料成員。
建構函式定義:
1.c++規定,每個類必須有預設的建構函式,沒有建構函式就不能建立物件。
2.若沒有提供任何建構函式,那麼c++自動提供乙個預設的建構函式,該預設建構函式是乙個沒有引數的建構函式,它僅僅負責建立物件而不做任何賦值操作。
3.只要類中提供了任意乙個建構函式,那麼c++就不在自動提供預設建構函式。為類定義了建構函式後就必須為它提供預設建構函式。
4.類物件的定義和變數的定義類似,使用預設建構函式建立物件的時候,如果建立的是靜態或者是全域性物件,則物件的位模式全部為0,否則將會是隨機的。
首先看一下在沒有建構函式的時候,我們需要定義乙個初始化成員函式
void stock::init(const string & co,long n, double pr)
(2)使用字尾_:
class stock
兩種使用建構函式的方法:
stock food=stock("world",100,1.25);
stock garment("furry",100,1.25);
如果提供了非預設建構函式(如stock( const char co,int n,double pr)),但沒有提供預設建構函式,則下面的宣告將會出錯:stock stock1;
舉個例子,看下面的**:
#include class stock
void show();
protected:
char *name;
};
void stock::show()
類的建構函式與析構函式
類的建構函式與析構函式 include 所有的類預設都有乙個建構函式,析構函式 建構函式,過載,沒有返回值,class myclass myclass int data 建構函式可以過載 myclass void run void main1 explicit 關鍵字 控制函式不能採用型別轉換 in...
類建構函式 析構函式
下面的例項有助於更好地理解建構函式的概念 include using namespace std class line 成員函式定義,包括建構函式 line line void void line setlength double len double line getlength void 程式的...
類的建構函式與析構
1.把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。2.建構函式 析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首 以示區別。3.建構函式與析構函式都沒有返回值型...