999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C++程序設(shè)計中基于構(gòu)造函數(shù)的對象初始化方法研究

2019-05-23 10:44:48高葵付曉翠李蔚妍
電腦知識與技術(shù) 2019年8期
關(guān)鍵詞:定義程序

高葵 付曉翠 李蔚妍

摘要:C++程序設(shè)計中聲明對象時,如果需要對象的初始化,不能貿(mào)然指定對象的初始值,否則不僅不能實現(xiàn)初始化,還會引起編譯時的語法錯誤。我們可以通過編寫初始化程序-構(gòu)造函數(shù)來實現(xiàn)對象的初始化。

關(guān)鍵詞:C++;構(gòu)造函數(shù)

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2019)08-0234-02

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

Research on Object Initialization Method Based on Constructor in C++ Programming

GAO Kui, FU Xiao-cui, LI Wei-yan

(Information Science and Engineering, Shandong Agricultural University, Taian 271000, China)

Abstract: When declaring an object in C++ programming, if the object needs to be initialized, the initial value of the object cannot be specified rashly, otherwise it will not only fail to achieve initialization, but also cause syntax errors at compile time. We can implement object initialization by writing initializers - constructors.

Key words: C++; constructors

1 背景

對于學(xué)習(xí)C++程序設(shè)計的人員來說,理解程序中的基本概念是良好程序設(shè)計的開始。只有理解了這些概念,在解決實際問題的過程當(dāng)中,才能得心應(yīng)手,游刃有余。C++程序中聲明對象時,對象初始化跟普通變量不同,不能直接在聲明變量時直接初始化,而是需要由編寫的初始化程序來完成。這個初始化程序就是構(gòu)造函數(shù)。理解構(gòu)造函數(shù)的定義,正確進(jìn)行對象的初始化,才能保證程序的正常運(yùn)行。

2 函數(shù)介紹

構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值去構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。

與其他函數(shù)相比有如下不同:

1)構(gòu)造函數(shù)的名字必須與類名相同。

2)函數(shù)沒有返回類型—包括void。

3)在創(chuàng)建對象時,構(gòu)造函數(shù)被自動隱含調(diào)用,它的作用就是初始化對象。

使用時注意以下幾點(diǎn):

1)如果類中沒有構(gòu)造函數(shù),編譯器會自動生成一個默認(rèn)構(gòu)造函數(shù),沒有參數(shù)也不做任何事情的構(gòu)造函數(shù)。

2)若聲明了構(gòu)造函數(shù),編譯器就會在建立新對象時自動調(diào)用構(gòu)造函數(shù)。

3)若自定義的構(gòu)造函數(shù)有形參,則聲明對象時就必須給出初始值進(jìn)行初始化。

4)構(gòu)造函數(shù)可以被重載(即可以有多個同名的構(gòu)造函數(shù)),方便我們用不同初始數(shù)據(jù)創(chuàng)建對象。

我們可以根據(jù)構(gòu)造函數(shù)的不同形式,選擇合適的形式將對象初始化成特定的狀態(tài)。請看如下例子:

例題1:

#include

using namespace std;

class Clock

{

public:

void SetTime() {hour=10; min=42; sec=30;} //無構(gòu)造函數(shù),使用公有函數(shù)設(shè)置時間

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1; //只能如此聲明對象,調(diào)用默認(rèn)構(gòu)造函數(shù),不可以進(jìn)行初始化。

t1.SetTime();

cout<<"現(xiàn)在時間是:"<

t1.showtime();

}

運(yùn)行結(jié)果:

現(xiàn)在時間是:

10:42:30

分析:本程序中類的定義沒有聲明構(gòu)造函數(shù),在主程序中聲明對象時自動調(diào)用默認(rèn)構(gòu)造函數(shù),無法進(jìn)行初始化,因為默認(rèn)構(gòu)造函數(shù)什么也不做。定義了公有函數(shù)SetTime來進(jìn)行時間的設(shè)置,完成對象的數(shù)據(jù)成員賦值。

例題2:

#include

using namespace std;

class Clock

{

public:

Clock(int newh,int newm,int news) {hour=newh; min=newm; sec=news;}

//定義帶參數(shù)構(gòu)造函數(shù)

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1 (12,45,56); //只能如此聲明對象,調(diào)用帶參數(shù)構(gòu)造函數(shù),不可以省略初始值。

cout<<"默認(rèn)時間是:"<

t1.showtime();

}

運(yùn)行結(jié)果:

默認(rèn)時間是:

12:45:56

分析:本程序中類的定義聲明了帶參數(shù)的構(gòu)造函數(shù),在主程序中聲明對象時必須給出對象的初始值進(jìn)行初始化。

例題3:

#include

using namespace std;

class Clock

{

public:

Clock( ) { hour=0; min=0; sec=0; } //無參數(shù)構(gòu)造函數(shù)

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1; //只能如此聲明對象,調(diào)用無參數(shù)構(gòu)造函數(shù)

cout<<"默認(rèn)時間是:"<

t1.showtime();

}

運(yùn)行結(jié)果:

默認(rèn)時間是:

0:0:0

分析:本程序中類的定義聲明了無參數(shù)的構(gòu)造函數(shù),在主程序中聲明對象時調(diào)用無參數(shù)構(gòu)造函數(shù)進(jìn)行初始化,不能給出對象的初始值。

例題4:

#include

using namespace std;

class Clock

{

public:

Clock(int newh,int newm,int news) {hour=newh; min=newm; sec=news;}//帶參數(shù)構(gòu)造函數(shù)

Clock(int newh=1,int newm=1,int news=1) { } //帶默認(rèn)參數(shù)構(gòu)造函數(shù)

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1(13,45,45),t2;

//可以用兩種方式聲明類的對象,有初始值的和無初始值的,分別調(diào)用前面兩種形式的構(gòu)造函數(shù)。

cout<<"默認(rèn)時間是:"<

t1.showtime();

t2.showtime();

}

運(yùn)行結(jié)果:

默認(rèn)時間是:

13:45:45

1:1:1

分析:本程序中類的定義聲明了帶參數(shù)和帶默認(rèn)參數(shù)的構(gòu)造函數(shù),構(gòu)造函數(shù)被重載。在主程序中聲明對象時可以用兩種方式聲明類的對象,調(diào)用帶參數(shù)和帶默認(rèn)參數(shù)的構(gòu)造函數(shù)進(jìn)行初始化。

3 總結(jié)

通過以上例子和分析可以得出如下結(jié)論:

1)構(gòu)造函數(shù)有默認(rèn)的構(gòu)造函數(shù)和聲明的構(gòu)造函數(shù)。

2)類中聲明了構(gòu)造函數(shù)的,創(chuàng)建對象時一定要初始化。

3)構(gòu)造函數(shù)的參數(shù)形式多種多樣,分別有參數(shù)的,無參數(shù)的,帶默認(rèn)值的等。

4)聲明對象時一定要考慮構(gòu)造函數(shù)的具體定義形式,給出對象的正確初始化。有參數(shù)的要給出初始化值,無參數(shù)的和帶默認(rèn)值的不用給出初始值。

4 結(jié)束語

通過使用構(gòu)造函數(shù),可以實現(xiàn)對象的初始化,通過舉例,總結(jié)了使用的規(guī)則和注意事項,提出了如何正確使用它們進(jìn)行對象的初始化。

參考文獻(xiàn):

[1] 譚浩強(qiáng). C++程序設(shè)計[M]. 北京: 清華大學(xué)出版社, 2018.

[2] 鄭莉. C++程序設(shè)計[M]. 4版. 北京: 清華大學(xué)出版社, 2013.

[3] 梁勇. C++程序設(shè)計[M]. 北京: 機(jī)械工業(yè)出版社, 2008.

【通聯(lián)編輯:謝媛媛】

猜你喜歡
定義程序
永遠(yuǎn)不要用“起點(diǎn)”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風(fēng)格”
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
修辭學(xué)的重大定義
主站蜘蛛池模板: 国产午夜精品一区二区三区软件| 蝌蚪国产精品视频第一页| 在线观看亚洲人成网站| 亚洲成人网在线观看| 久久9966精品国产免费| 国产成人永久免费视频| 国产午夜无码专区喷水| 99热在线只有精品| 国产精品视频系列专区| 77777亚洲午夜久久多人| 97国产精品视频人人做人人爱| 精品久久777| 久久黄色视频影| 久久国语对白| 亚洲人成网线在线播放va| 九九热精品视频在线| 中文字幕亚洲电影| 精品国产自在在线在线观看| 国产成人精品2021欧美日韩| 国产产在线精品亚洲aavv| 狠狠色综合久久狠狠色综合| 日本三级精品| 尤物精品视频一区二区三区| 久久99国产综合精品女同| 毛片在线区| 成人福利在线免费观看| 国产女人在线视频| 老色鬼久久亚洲AV综合| 在线观看av永久| 免费一极毛片| 免费网站成人亚洲| 国产老女人精品免费视频| 亚洲伊人久久精品影院| 国产毛片片精品天天看视频| 精品国产网| 欧美精品亚洲精品日韩专区| 亚洲精品欧美重口| 亚洲天堂日韩在线| 亚洲一区网站| 亚洲精品日产精品乱码不卡| 亚洲色图欧美激情| 久久免费成人| 女人18毛片一级毛片在线| 综合天天色| 久草青青在线视频| 中文字幕在线观看日本| 亚洲一区二区三区国产精品| 精品成人一区二区| 久久免费视频播放| 国产日韩欧美中文| 国产成人免费视频精品一区二区| 尤物精品视频一区二区三区| 国产精品开放后亚洲| 国产自产视频一区二区三区| 欧美日韩精品一区二区在线线 | 国产菊爆视频在线观看| 国产精品手机在线观看你懂的| 亚洲人成网7777777国产| 伊在人亚洲香蕉精品播放| 狂欢视频在线观看不卡| 人人看人人鲁狠狠高清| 亚洲一区色| 91毛片网| 97在线碰| 欧美性久久久久| 色悠久久综合| 91毛片网| 又爽又黄又无遮挡网站| 99热国产这里只有精品9九| 国产美女一级毛片| 狠狠色狠狠综合久久| 日韩免费视频播播| 精品国产美女福到在线直播| 麻豆国产精品| 精品国产美女福到在线直播| 色综合天天综合中文网| 久久久久久久蜜桃| 日韩成人在线网站| 国产小视频a在线观看| av在线人妻熟妇| 国产小视频a在线观看| 高清无码一本到东京热|