久久免费视频91,青青草原影院伊人,国产剧情在线播放一区二区,亚欧日韩欧美一区

<menu id="meme2"><acronym id="meme2"></acronym></menu>
  • <dfn id="meme2"><code id="meme2"></code></dfn>
    <tbody id="meme2"><td id="meme2"></td></tbody>
  • <menu id="meme2"><acronym id="meme2"></acronym></menu>
  • 首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導(dǎo)航

    計(jì)算機(jī)二級(jí)C++語言程序設(shè)計(jì)考試輔導(dǎo)筆記(八)

    來源:考試吧 2018-03-26 10:05:12 要考試,上考試吧! 萬題庫
    “計(jì)算機(jī)二級(jí)C++語言程序設(shè)計(jì)考試輔導(dǎo)筆記(八)”供考生參考。更多計(jì)算機(jī)等級(jí)考試內(nèi)容請(qǐng)?jiān)L問考試吧計(jì)算機(jī)等級(jí)考試網(wǎng)。

      四、轉(zhuǎn)換函數(shù)的調(diào)用

      C++里調(diào)用轉(zhuǎn)換函數(shù)有三種形式:第一種是隱式轉(zhuǎn)換,例如編譯器需要一個(gè)Date對(duì)象,而程序提供的是CustomDate對(duì)象,編譯器會(huì)自動(dòng)調(diào)用合適的轉(zhuǎn)換函數(shù)。另外兩種都是需要在程序代碼中明確給出的顯式轉(zhuǎn)換。C++強(qiáng)制類型轉(zhuǎn)換是一種,還有一種是顯式調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)和成員轉(zhuǎn)換函數(shù)。下面的程序給出了三中轉(zhuǎn)換形式:

      #include iostream.h

      class CustomDate

      {

      public:

      int da, yr;

      CustomDate(int d=0,int y=0) {da=d; yr=y;}

      void display()

      {

      cout< }

      };

      class Date

      {

      int mo, da, yr;

      public:

      Date(int m,int d,int y)

      {

      mo=m; da=d; yr=y;

      }

      operator CustomDate();

      };

      Date::operator CustomDate()

      {

      static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

      CustomDate cd(0,yr);

      for(int i=0;i cd.da+=da;

      return cd;

      }

      int main()

      {

      Date dt(11,17,89);

      CustomDate cd;

      cd = dt;

      cd.display();

      cd = (CustomDate) dt;

      cd.display();

      cd = CustomDate(dt);

      cd.display();

      return 0;

      }

      五、轉(zhuǎn)換發(fā)生的情形

      上面的幾個(gè)例子都是通過不能類型對(duì)象之間的相互賦值來調(diào)用轉(zhuǎn)換函數(shù),還有幾種調(diào)用的可能:

      參數(shù)傳遞

      初始化

      返回值

      表達(dá)式語句

      這些情況下,都有可能調(diào)用轉(zhuǎn)換函數(shù)。

      下面的程序不難理解,就不分析了。

      #include iostream.h

      class CustomDate

      {

      public:

      int da, yr;

      CustomDate() {}

      CustomDate(int d,int y) { da=d; yr=y;}

      void display()

      {

      cout< }

      };

      class Date

      {

      int mo, da, yr;

      public:

      Date(int m,int d,int y) { mo=m; da=d; yr=y; }

      operator CustomDate();

      };

      Date::operator CustomDate()

      {

      static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

      CustomDate cd(0,yr);

      for (int i=0;i cd.da+=da;

      return cd;

      }

      class Tester

      {

      CustomDate cd;

      public:

      explicit Tester(CustomDate c) { cd=c; }

      void display() { cd.display(); }

      };

      void dispdate(CustomDate cd)

      {

      cd.display();

      }

      CustomDate rtndate()

      {

      Date dt(9,11,1);

      return dt;

      }

      int main()

      {

      Date dt(12,24,3);

      CustomDate cd;

      cd = dt;

      cd.display();

      dispdate(dt);

      Tester ts(dt);

      ts.display();

      cd = rtndate();

      cd.display();

      return 0;

      }

      六、顯式構(gòu)造函數(shù)

      注意上面Tester類的構(gòu)造函數(shù)前面有一個(gè)explicit修飾符。如果不加上這個(gè)關(guān)鍵字,那么在需要把CustomDate對(duì)象轉(zhuǎn)換成Tester對(duì)象時(shí),編譯器會(huì)把該函數(shù)當(dāng)作轉(zhuǎn)換構(gòu)造函數(shù)來調(diào)用。但是有時(shí)候,并不想把這種只有一個(gè)參數(shù)的構(gòu)造函數(shù)用于轉(zhuǎn)換目的,而僅僅希望用它來顯式地初始化對(duì)象,此時(shí),就需要在構(gòu)造函數(shù)前加explicit。如果在聲明了Tester對(duì)象以后使用了下面的語句將導(dǎo)致一個(gè)錯(cuò)誤:

      ts=jd; //error

      這個(gè)錯(cuò)誤說明,雖然Tester類中有一個(gè)以Date型變量為參數(shù)的構(gòu)造函數(shù),編譯器卻不會(huì)把它看作是從Date到Tester的轉(zhuǎn)換構(gòu)造函數(shù),因?yàn)樗穆暶髦邪薳xplicit修飾符。

      七、表達(dá)式內(nèi)部的轉(zhuǎn)換

      在表達(dá)式內(nèi)部,如果發(fā)現(xiàn)某個(gè)類型和需要的不一致,就會(huì)發(fā)生錯(cuò)誤。數(shù)字類型的轉(zhuǎn)換是很簡(jiǎn)單,這里就不舉例了。下面的程序是把Date對(duì)象轉(zhuǎn)換成長(zhǎng)整型值。

      #include iostream.h

      class Date

      {

      int mo, da, yr;

      public:

      Date(int m,int d,int y)

      {

      mo=m; da=d; yr=y;

      }

      operator long();

      };

      Date::operator long()

      {

      static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

      long days=yr;

      days*=365;

      days+=(yr-1900)/4; //從1900年1月1日開始計(jì)算

      for(int i=0;i days+=da;

      return days;

      }

      int main()

      {

      Date today(12,24,2003);

      const long ott=123;

      long sum=ott+today;

      cout< return 0;

      }

      在表達(dá)式中,當(dāng)需要轉(zhuǎn)換的對(duì)象可以轉(zhuǎn)換成某個(gè)數(shù)字類型,或者表達(dá)式調(diào)用了作用于某個(gè)類的重載運(yùn)算符時(shí),就會(huì)發(fā)生隱式轉(zhuǎn)換。運(yùn)算符重載以后再學(xué)習(xí)。

    掃描/長(zhǎng)按二維碼幫助考試通關(guān)
    2018年等考報(bào)考資訊
    2018等考各科通關(guān)技巧
    2018各科最新預(yù)測(cè)試卷
    2018等考各科備考資料

    微信搜索"考試吧"了解更多考試資訊、下載備考資料

    上一頁  1 2 3 

      相關(guān)推薦:

      2018年全國計(jì)算機(jī)等級(jí)考試必做試題匯總(各科目)

      2018年全國計(jì)算機(jī)等級(jí)考試復(fù)習(xí)知識(shí)點(diǎn)匯總(各科目)

      2018年全國計(jì)算機(jī)等級(jí)考試時(shí)間|教材目錄(2018年版)

      2018全國計(jì)算機(jī)等級(jí)考試備考經(jīng)驗(yàn)及應(yīng)試技巧匯總

      考試內(nèi)容|考試大綱|2018計(jì)算機(jī)等級(jí)考試科目

      歷年真題匯總|考試吧策劃:2018年計(jì)算機(jī)等級(jí)考試報(bào)考指南

    文章搜索
    萬題庫小程序
    萬題庫小程序
    ·章節(jié)視頻 ·章節(jié)練習(xí)
    ·免費(fèi)真題 ·模考試題
    微信掃碼,立即獲!
    掃碼免費(fèi)使用
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    此欄目下沒有文章
    版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
    Copyright © 2004- 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) 出版物經(jīng)營(yíng)許可證新出發(fā)京批字第直170033號(hào) 
    京ICP證060677 京ICP備05005269號(hào) 中國科學(xué)院研究生院權(quán)威支持(北京)
    在線模擬試題
    考證通關(guān)殺器
    考試最新資訊
    學(xué)
    一次通關(guān)技巧