請注意,這一節內容是c++的重點,要特別注意!
我們先說一下什麼是構造函數。
上一個教程我們簡單說了關於類的一些基本內容,對於類對象成員的初始化我們始終是建立成員函數然後手工調用該函數對成員進行賦值的,那麼在c++中對於類來說有沒有更方便的方式能夠在對象創建的時候就自動初始化成員變量呢,這一點對操作保護成員是至關重要的,答案是肯定的。關於c++類成員的初始化,有專門的構造函數來進行自動操作而無需要手工調用,在正式講解之前先看看c++對構造函數的一個基本定義。
1.C++規定,每個類必須有默認的構造函數,沒有構造函數就不能創建對象。
2.若沒有提供任何構造函數,那麼c++提供自動提供一個默認的構造函數,該默認構造函數是一個沒有參數的構造函數,它僅僅負責創建對象而不做任何賦值操作。
3.只要類中提供了任意一個構造函數,那麼c++就不在自動提供默認構造函數。
4.類對象的定義和變量的定義類似,使用默認構造函數創建對象的時候,如果創建的是靜態或者是全局對象,則對象的位模式全部為0,否則將會是隨即的。
我們來看下面的代碼:
#include <iostream>
using namespace std;
class Student
{
public:
Student()//無參數構造函數
{
number = 1;
score = 100;
}
void show();
protected:
int number;
int score;
};
void Student::show()
{
cout<<number<<endl<<score<<endl;
}
void main()
{
Student a;
a.show();
cin.get();
}
在類中的定義的和類名相同,並且沒有任何返回類型的Student()就是構造函數,這是一個無參數的構造函數,他在對象創建的時候自動調用,如果去掉Student()函數體內的代碼那麼它和c++的默認提供的構造函數等價的。