C 建構函式 析構函式

2021-10-05 08:19:50 字數 2594 閱讀 3115

clock()

;//參數列是空的,

clock

(int newh=0,

int newm=0,

int news=0)

;//有形參,但是形參全部採用了預設值

//那麼這兩種函式在呼叫時可以都不給引數,這就會導致錯

「=default」

class

clock

;

建構函式應用舉例

#include

using

namespace std;

class

clock

;void clock::

settime

(int newh,

int newm,

int news)

void clock::

showtime()

//建構函式的實現

clock::

clock

(int newh,

int newm,

int news)

:hour

(newh)

,minute

(newm)

,second

(news)

clock::

clock()

:hour(0

),minute(0

),second(0

)//預設建構函式,程式給出缺省的初始值,

intmain()

類中往往有多個建構函式,只是參數列和初始化列表不同,其初始化演算法都是相同的,

這時,為了避免**重複,可以使用委託建構函式。

clock 類的兩個建構函式:

clock::

clock

(int newh,

int newm,

int news)

:hour

(newh)

,minute

(newm)

,second

(news)

clock::

clock()

:hour(0

),minute(0

),second(0

)//預設建構函式

委託建構函式

clock::

clock

(int newh,

int newm,

int news)

:hour

(newh)

,minute

(newm)

,second

(news)

//定義建構函式

clock()

:clock(0

,0,0

)//委託建構函式

複製建構函式是一種特殊的建構函式,其形參為本類的物件引用。作用是用乙個已存在的物件去初始化同型別的新物件。

class 類名

;類名::類(

const 類名 &物件名)

//複製建構函式的實現

隱含的複製建構函式

#include

#ifndef _myvector_h

#define _myvector_h

#endif

using

namespace std;

class

point

// 建構函式,內聯

point

(const point &p)

;// 複製建構函式

void

setx

(int xx)

void

sety

(int yy)

intgetx()

const

// 常函式 第 5 章

intgety()

const

// 常函式 第 5 章

private

:int x, y;

// 私有資料};

// 複製建構函式的實現

point::

point

(const point &p)

// 形參為 point 類物件

void

fun1

(point p)

//返回值為 point 類物件

point fun2()

intmain()

#include

using

namespace std;

class

point

;point::

point

(int xx,

int yy)

//定義建構函式

point::

~point()

//... 其他函式實現

C 建構函式 析構函式 虛析構函式

一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...

C 建構函式,析構函式

一 建構函式 在建立類的物件時自動呼叫的乙個函式,主要是為物件本身做初始化工作 沒有返回值,名字和類的名字相同,因為是在建立物件時候自動呼叫的,所以必須型別為public的,可以帶引數,可以有多個 如果類中沒有建構函式,在下面三種情況下,會自動的新增預設的建構函式 1.如果類中有虛函式,或者類中有虛...

C 建構函式 析構函式

在學習類的成員方法時,遇到了兩個函式。簡單介紹一下 一 建構函式 建構函式是類中比較特殊的成員函式,它也是一種方法。主要用來為物件分配儲存空間,完成初始化操作,例如給類的成員變數賦值等。一般來說,建構函式一旦開始執行,那麼物件的生命週期就開始了,最終它將以析構函式結束。如果乙個類含有建構函式,在例項...