C++類構造函數和析構函數
C++類構造函數和析構函數,拷貝構造函數
構造函數名稱和類名稱相同,構造函數為類的對象提供初始化功能。每當創建新類時都會調用構造函數。構造函數可以有多個。
構造函數定義
構造函數與普通成員函數區別:不含有返回類型。如:
student::student(double w,double h);//student前什麽都沒有
void student::show();//有void
構造函數參數列表含有一個或多個需要初始化的數據成員.註意構造函數的參數不是類私有數據成員,而是新的變量
student::student(double w, double h)//此處不是weight和height { weight=w; height=h; } |
使用構造函數實例化一個對象(顯式和隱式)
student A=student(45,100);//顯示創建對象A,A的體重45kg,身高100cm
student A(45,100);//隱式創建對象
默認構造函數:
用以下方式創建對象時會調用默認構造函數,如
student C;//主要C後面沒有()
沒有定義任何構造函數時,編譯器會自動創建默認構造函數。程序員一旦為類定義構造函數時也需要提供默認構造函數,否則語句student C會無法通過編譯。定義默認構造函數有兩種。一種是給已經定義的構造函數參數全部初始化,如
student::student(double w=0,double h=0) { weight=w; height=h; } |
另一種是函數重載方式,定義一個沒有參數的構造函數。在這個構造函數中一般會對類數據成員初始化
student::student()
{
weight=0;
height=0;
}
析構函數
析構函數完成清理工作。一般是當對象失效時調用。形式如下:~student();
student::~student()
{
}
每個類都只能有一個析構函數。如果構造函數使用了new,則析構函數得提供delete
C++類構造函數和析構函數