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