1. 程式人生 > >C++類構造函數和析構函數

C++類構造函數和析構函數

調用 table 編譯器 什麽 工作 編譯 程序員 初始 adding

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++類構造函數和析構函數