當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > C++ 類構(gòu)造函數(shù)
C++中,有一類比較特殊的函數(shù)--構(gòu)造函數(shù),構(gòu)造函數(shù)是類的一種特殊的成員函數(shù),它會在每次創(chuàng)建類的新對象時執(zhí)行。構(gòu)造函數(shù)的名稱與類的名稱是完全相同的,并且不會返回任何類型,也不會返回 void。構(gòu)造函數(shù)可用于為某些成員變量設(shè)置初始值。
構(gòu)造函數(shù)主要用來在創(chuàng)建對象時完成對對象屬性的一些初始化等操作, 當(dāng)創(chuàng)建對象時, 對象會自動調(diào)用它的構(gòu)造函數(shù)。一般來說, 構(gòu)造函數(shù)有以下三個方面的作用:
1) 給創(chuàng)建的對象建立一個標(biāo)識符;
2) 為對象數(shù)據(jù)成員開辟內(nèi)存空間;
3) 完成對象數(shù)據(jù)成員的初始化。
無論是用戶自定義的構(gòu)造函數(shù)還是默認(rèn)構(gòu)造函數(shù)都主要有以下特點:
1) 在對象被創(chuàng)建時自動執(zhí)行;
2) 構(gòu)造函數(shù)的函數(shù)名與類名相同;
3) 沒有返回值類型、也沒有返回值;
4) 構(gòu)造函數(shù)不能被顯式調(diào)用。
由于在大多數(shù)情況下我們希望在對象創(chuàng)建時就完成一些對成員屬性的初始化等工作, 而默認(rèn)構(gòu)造函數(shù)無法滿足我們的要求, 所以我們需要顯式定義一個構(gòu)造函數(shù)來覆蓋掉默認(rèn)構(gòu)造函數(shù)以便來完成必要的初始化工作, 當(dāng)用戶自定義構(gòu)造函數(shù)后編譯器就不會再為對象生成默認(rèn)構(gòu)造函數(shù)。
在構(gòu)造函數(shù)的特點中我們看到, 構(gòu)造函數(shù)的名稱必須與類名相同, 并且沒有返回值類型和返回值, 看一個構(gòu)造函數(shù)的定義:
#include <iostream>
using namespace std;
class Student
{
public:
Student()//無參數(shù)構(gòu)造函數(shù)
{
number = 0;
score = 90;
}
void show();
protected:
int number;
int score;
};
void Student::show()
{
cout<<number<<endl<<score<<endl;
}
void main()
{
Student a;
a.show();
cin.get();
}
執(zhí)行結(jié)果:0
90
在類中的定義的和類名相同,并且沒有任何返回類型的Student()就是構(gòu)造函數(shù),這是一個無參數(shù)的構(gòu)造函數(shù),他在對象創(chuàng)建的時候自動調(diào)用,如果去掉Student()函數(shù)體內(nèi)的代碼那么它和c++的默認(rèn)提供的構(gòu)造函數(shù)等價的。
構(gòu)造函數(shù)可以帶任意多個的形式參數(shù),這一點和普通函數(shù)的特性是一樣的!