黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 - 網校 - 萬題庫 - 直播 - 雄鷹 - 團購 - 書城 - 模考 - 學習通 - 導航 - 510 -
首頁考試吧網校萬題庫直播雄鷹510團購書城模考論壇實用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓
專升本
自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托福考試
托業考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業培訓
社會工作者
銀行從業
教師資格
營養師
保險從業
普 通 話
證券從業
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業水平
衛生資格 執業醫師 執業藥師 執業護士
會計從業資格
基金從業資格
統計從業資格
經濟師
精算師
統計師
會計職稱
法律顧問
ACCA考試
初級會計職稱
資產評估師
高級經濟師
注冊會計師
高級會計師
美國注冊會計師
審計師考試
國際內審師
注冊稅務師
理財規劃師
一級建造師
安全工程師
設備監理師
公路監理師
公路造價師
二級建造師
招標師考試
物業管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環保工程師
化工工程師
暖通工程師
咨詢工程師
結構工程師
城市規劃師
材料員考試
消防工程師
監理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學習
思想匯報
作文大全
工作總結
求職招聘 論文下載 直播課堂
您現在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 復習資料 > 正文

2015年國家計算機二級C++考試復習資料(10)

來源:考試吧 2014-12-26 14:17:59 考試吧:中國教育培訓第一門戶 模擬考場
考試吧整理了“2015年國家計算機二級C++考試復習資料”,提供給各位考生備考,更多考試資料請持續關注考試吧計算機等級考試頻道!

  點擊查看:2015年國家計算機二級C 考試復習資料匯總

  二級C++輔導筆記:重載雙目運算符

  在(五)我們已經介紹了重載賦值運算符,這里就不重新說明了。

  一。作為類成員函數的重載

  為了能進行類對象和一個整型值的加法運算,需要寫一個類的成員函數來重載雙目加法(+)運算符。該函數在類中的聲明如下:

  Date operator + (int) const;

  函數的聲明指出,返回值是一個Date類對象,函數名是運算符+,只有一個整型參數,而且函數是常量型的。當編譯器發現某個函數以加上前綴operator的真實運算符作為函數名,就會把該函數當作重載運算符函數來處理。如果在表達式中,該運算符的左邊是一個類對象,右邊是一個參數類型的一個對象,那么重載運算符函數就會被調用。調用形式如下:

  Date dt(6,9,2005);

  dt=dt+100;

  也可以顯式的調用重載運算符函數:

  dt.operator + (100);

  下面代碼重載了雙目加法運算符來計算一個整數和一個Date類對象之和,并且返回Date類對象。

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  static int dys[];

  public:

  Date(int m=0,int d=0,int y=0)

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

  void display() const

  { cout < Date operator + (int) const;

  };

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

  Date Date::operator+(int) const

  {

  Date dt=*this;

  n+=dt.da;

  while(n >=dys[dt.mo-1])

  {

  n-=dys[dt.mo-1];

  if(++dt.da==13)

  {

  dt.mo=1;

  dt,yr++;

  }

  }

  dt.da=n;

  return dt;

  }

  int main()

  {

  Date olddate(1,1,2005);

  Date newdate;

  newdate=olddate+100;

  newdate.display();

  return 0;

  }

  二。非類成員的運算符重載

  在重載運算符的原則中說到,要保持運算符的可交換性。而上面的程序只允許Date類對象在運算符的左邊而整型值在右邊,不支持下面的語句:

  Date newdate=100+olddate;

  所以,僅僅靠一個類的成員重載運算符是無法實現上面功能的。對重載雙目運算符的類成員函數來說,總是認定調用函數的對象位于運算符左邊。不過,我們可以再寫一個非類成員的重載運算符函數,可以規定Date類的對象在運算符右邊,而別的類型在運算符左邊。例如,我們可以這樣在類的外部定義一個函數:

  Date operator + (int n,Date & dt)

  下面代碼在原先的基礎上增加了一個非類成員函數來實現雙目加法運算符的重載。

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  static int dys[];

  public:

  Date(int m=0,int d=0,int y=0)

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

  void display() const

  { cout < Date operator + (int) const;

  };

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

  Date Date::operator+(int) const

  {

  Date dt=*this;

  n+=dt.da;

  while(n >=dys[dt.mo-1])

  {

  n-=dys[dt.mo-1];

  if(++dt.da==13)

  {

  dt.mo=1;

  dt,yr++;

  }

  }

  dt.da=n;

  return dt;

  }

  Date operator + (int n,Date & dt)

  {

  return dt+n;

  }

  int main()

  {

  Date olddate(1,1,2005);

  Date newdate;

  newdate=olddate+100;

  newdate.display();

  return 0;

  }

  上面的例子中非類成員重載運算符函數調用了類中的重載+運算符來實現加法運算。如果類當中沒有提供這樣的函數,那么非類成員的重載運算符函數將被迫訪問類的私有數據來實現加法運算。這樣的話,需要把這個函數聲明為類的友元,如下:

  class Date

  {

  friend Date operator + (int n,Date &);

  };

  上例中重載運算符函數聲明了全部兩個參數,這是因為它不是類的成員,因此它不能作為類的成員函數被調用,就缺少了一個隱含的參數。

  第一個重載加法運算符函數也可以用類的友元函數來實現。作為一種約定,這通常把所有為類重載的運算符都設定為該類的友元。

  例子中只給出了重載加法的代碼,我們同樣可以來重載減法,乘除法等等。

  三。重載關系運算符

  如果想要對兩個日期進行比較,比如出現下面這樣的代碼:

  if(olddate 可以向上面用類似的方法重載關系運算符

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  public:

  Date(int m=0,int d=0,int y=0)

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

  void display() const

  { cout < int operator == (Date& dt) const;

  int operator < (Date& dt) const;

  };

  int Date::operator== (Date & dt) const

  {

  return (this- >mo==dt.mo && this->da==dt.da && this->yr==dt.yr);

  }

  int Date::operator < (Date& dt) const

  {

  if(this- >yr == dt.yr)

  {

  if(this- >mo == dt.mo) return this->da < dt.da;

  return this- >mo < dt.mo;

  }

  return this- >yr < dt.yr;

  }

  int main()

  {

  Date date1(2,14,2005);

  Date date2(6,9,2005);

  Date date3(2,14,2005);

  if(date1 {

  date1.display();

  cout < date2.display();

  }

  cout < if(date1==date3)

  {

  date1.display();

  cout < date3.display();

  }

  return 0;

  }

  可以類似的重載其他關系運算符,如!=

  int operator != (Date & dt) { return !(*this==dt);}

  四。其他賦值運算符

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  static int dys[];

  public:

  Date(int m=0,int d=0,int y=0)

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

  void display() const

  { cout < Date operator + (int) const;

  Date operator +=(int)

  { *this=*this+n; return *this;}

  };

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

  Date Date::operator+(int) const

  {

  Date dt=*this;

  n+=dt.da;

  while(n >=dys[dt.mo-1])

  {

  n-=dys[dt.mo-1];

  if(++dt.da==13)

  {

  dt.mo=1;

  dt,yr++;

  }

  }

  dt.da=n;

  return dt;

  }

  int main()

  {

  Date olddate(1,1,2005);

  olddate+=100;

  olddate.display();

  return 0;

  }

  相關推薦:

  各地2015年計算機等級考試報名時間匯總

  各地2015年上半年計算機等級考試費用匯總

  2015年計算機二級C++模擬練習題及答案匯總

文章責編:luoyuting  
看了本文的網友還看了
文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網 All Rights Reserved 
中國科學院研究生院權威支持(北京) 電 話:010-62168566 傳 真:010-62192699
主站蜘蛛池模板: 亚洲国产模特在线播放 | 看真人视频一一级毛片 | 美国伊人网 | 国产亚洲高清在线精品99 | 国产精品成人免费综合 | 久草久在线 | 青草视频在线看 | 日韩欧美在线免费观看 | 国产在线精品一区二区中文 | 高清 国产 日韩 欧美 | 丝袜国产在线观看 | 看中国一级毛片 | 成人毛片免费在线观看 | 亚洲日韩第一页 | 97国产免费全部免费观看 | 欧美成人观看视频在线 | 成人羞羞国产免费软件 | 免费看男人靠女人靠到爽 | 黄色片免费观看 | 日韩在线观看一区 | 在线天天干 | 色综合成人网 | 天天射综合| aa级黄色片 | 激情文学综合丁香 | 在线精品日韩一区二区三区 | 成人xxx免费视频播放 | japanese55老妇成熟乱 | 天天干精品 | 亚洲成人免费在线 | 亚洲精品乱码国产精品乱码 | 国产欧美日韩精品一区二 | 日本不卡视频在线播放 | 国产大片黄 | 91福利国产在线观看一区二区 | 国产精品99久久久久久董美香 | 亚洲高清国产品国语在线观看 | 波多野结衣50连精喷在线 | 4四虎44虎www在线影院麻豆 | 婷婷天堂 | 中文字幕免费在线视频 |