• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2019-05-23 10:44高葵付曉翠李蔚妍
      電腦知識(shí)與技術(shù) 2019年8期
      關(guān)鍵詞:中類(lèi)調(diào)用程序設(shè)計(jì)

      高葵 付曉翠 李蔚妍

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

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

      中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

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

      開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(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 背景

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

      2 函數(shù)介紹

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

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

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

      2)函數(shù)沒(méi)有返回類(lèi)型—包括void。

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

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

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

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

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

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

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

      例題1:

      #include

      using namespace std;

      class Clock

      {

      public:

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

      void showtime(){cout<

      private:

      int hour,min,sec;

      };

      void main()

      {

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

      t1.SetTime();

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

      t1.showtime();

      }

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

      現(xiàn)在時(shí)間是:

      10:42:30

      分析:本程序中類(lèi)的定義沒(méi)有聲明構(gòu)造函數(shù),在主程序中聲明對(duì)象時(shí)自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù),無(wú)法進(jìn)行初始化,因?yàn)槟J(rèn)構(gòu)造函數(shù)什么也不做。定義了公有函數(shù)SetTime來(lái)進(jìn)行時(shí)間的設(shè)置,完成對(duì)象的數(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); //只能如此聲明對(duì)象,調(diào)用帶參數(shù)構(gòu)造函數(shù),不可以省略初始值。

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

      t1.showtime();

      }

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

      默認(rèn)時(shí)間是:

      12:45:56

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

      例題3:

      #include

      using namespace std;

      class Clock

      {

      public:

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

      void showtime(){cout<

      private:

      int hour,min,sec;

      };

      void main()

      {

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

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

      t1.showtime();

      }

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

      默認(rèn)時(shí)間是:

      0:0:0

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

      例題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;

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

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

      t1.showtime();

      t2.showtime();

      }

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

      默認(rèn)時(shí)間是:

      13:45:45

      1:1:1

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

      3 總結(jié)

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

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

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

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

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

      4 結(jié)束語(yǔ)

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

      參考文獻(xiàn):

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

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

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

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

      猜你喜歡
      中類(lèi)調(diào)用程序設(shè)計(jì)
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      知識(shí)產(chǎn)權(quán)專(zhuān)業(yè)人員正式納入國(guó)家職業(yè)分類(lèi)
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
      相空間中類(lèi)分?jǐn)?shù)階變分問(wèn)題的Noether對(duì)稱(chēng)性與守恒量
      枣庄市| 阿尔山市| 长治县| 定结县| 通榆县| 广东省| 酒泉市| 偏关县| 尤溪县| 东兴市| 太原市| 南召县| 革吉县| 柳林县| 勃利县| 闽清县| 平江县| 墨脱县| 始兴县| 噶尔县| 衡山县| 通山县| 富顺县| 泸定县| 罗平县| 乃东县| 子洲县| 榕江县| 文登市| 枣庄市| 冀州市| 威信县| 丹棱县| 从化市| 库尔勒市| 织金县| 宁德市| 北辰区| 龙门县| 乌拉特中旗| 陇西县|