亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個代碼是練習題運行時提示有錯誤,望大師指教

這個代碼是練習題運行時提示有錯誤,望大師指教

C++
qliushiyi 2016-01-16 00:16:06
#include?<iostream> using?namespace?std; /** ?*?定義Coordinate類 ?*?數據成員:m_iX,m_iY ?*?成員函數:構造函數 ?*?重載--運算符,重載+運算符 ?*/ class?Coordinate { friend?Coordinate?&operator+(Coordinate?&c); public: ????Coordinate(int?x,?int?y) { m_iX?=?x; m_iY?=?y; } ????//?前置--運算符重載 Coordinate?&operator--() ????{ ????????--m_iX; ????????--m_iY; ????????return?*this; ????} ????//?后置--運算符重載 ????Coordinate?operator--(int) ????{ ????????Coordinate?old(*this); ????????this->m_iX--; ????????this->m_iY--; ????????return?old; ????} ????//?+號運算符重載 Coordinate?&operator+(Coordinate?&c) ????{ ????????m_iX=+m_iX; ????????m_iY=+m_iY; ????????return?c; ????} public: int?m_iX; int?m_iY; }; int?main(void) { Coordinate?coor1(1,?3); Coordinate?coor2(2,?4); Coordinate?coor3(0,?0); coor1--; --coor2; coor3?=?coor1?+?coor2; cout?<<?coor3.m_iX?<<?endl; cout?<<?coor3.m_iY?<<?endl; return?0; }
查看完整描述

2 回答

?
onemoo

TA貢獻883條經驗 獲得超454個贊

你重載的加法運算符沒做什么事?。?/p>

  • 沒有改變加法的第一個操作數——?m_iX=+m_iX; 這樣的代碼不是什么都沒做嗎!?

  • 還直接返回了第二個操作數

所以?coor3?=?coor1?+?coor2; 這句就直接把coor2賦值給了coor3,而coor2之前被自減為(1, 3),所以coor3也是(1, 3)。

這是你想要的行為嗎?


你的加法運算符是不是想要將兩個坐標加起來?

也許應該寫成這樣:

Coordinate?operator+(const?Coordinate?&r)
{
????Coordinate?rez(m_iX?+?r.m_iX,?m_iY?+?r.m_iY);
????return?rez;
}

? ?


查看完整回答
1 反對 回復 2016-01-20
?
wangben2012

TA貢獻1條經驗 獲得超0個贊

? ??//?+號運算符重載

????Coordinate?&operator+(Coordinate?&c)

????{

? ? ? ? c.m_iX += this.m_iX;

? ? ? ? c.m_iY += this.m_iY;

????????return?c;

????}

要區分變量屬于的對象,不加this默認的當前的操作對象。

查看完整回答
反對 回復 2016-01-20
  • 2 回答
  • 0 關注
  • 1445 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號