C++ 類構造函數
時間:2018-09-29 來源:未知
C++中,有一類比較特殊的函數--構造函數,構造函數是類的一種特殊的成員函數,它會在每次創(chuàng)建類的新對象時執(zhí)行。構造函數的名稱與類的名稱是完全相同的,并且不會返回任何類型,也不會返回 void。構造函數可用于為某些成員變量設置初始值。
構造函數主要用來在創(chuàng)建對象時完成對對象屬性的一些初始化等操作, 當創(chuàng)建對象時, 對象會自動調用它的構造函數。一般來說, 構造函數有以下三個方面的作用:
1) 給創(chuàng)建的對象建立一個標識符;
2) 為對象數據成員開辟內存空間;
3) 完成對象數據成員的初始化。
無論是用戶自定義的構造函數還是默認構造函數都主要有以下特點:
1) 在對象被創(chuàng)建時自動執(zhí)行;
2) 構造函數的函數名與類名相同;
3) 沒有返回值類型、也沒有返回值;
4) 構造函數不能被顯式調用。
由于在大多數情況下我們希望在對象創(chuàng)建時就完成一些對成員屬性的初始化等工作, 而默認構造函數無法滿足我們的要求, 所以我們需要顯式定義一個構造函數來覆蓋掉默認構造函數以便來完成必要的初始化工作, 當用戶自定義構造函數后編譯器就不會再為對象生成默認構造函數。
在構造函數的特點中我們看到, 構造函數的名稱必須與類名相同, 并且沒有返回值類型和返回值, 看一個構造函數的定義:
#include <iostream>
using namespace std;
class Student
{
public:
Student()//無參數構造函數
{
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í)行結果:0
90
在類中的定義的和類名相同,并且沒有任何返回類型的Student()就是構造函數,這是一個無參數的構造函數,他在對象創(chuàng)建的時候自動調用,如果去掉Student()函數體內的代碼那么它和c++的默認提供的構造函數等價的。
構造函數可以帶任意多個的形式參數,這一點和普通函數的特性是一樣的!

