为了账号安全,请及时绑定邮箱和手机立即绑定

这个代码逻辑正确的,但是书写有地方时错误了,在网页上执行时输出的内容时错误的,vc上执行是正确的

#include <iostream>
using namespace std;

/**
 * 定义Coordinate类
 * 数据成员:m_iX,m_iY
 * 成员函数:构造函数
 * 重载--运算符,重载+运算符
 */
class Coordinate
{
public:
    Coordinate(int x, int y)
	{
		m_iX = x;
		m_iY = y;
	}
    // 前置--运算符重载
	Coordinate& operator--()
	{
	    m_iX=m_iX--;
	    m_iY=m_iY--;
	    return *this;
    
    
	}
    // 后置--运算符重载
    Coordinate operator--(int)
    {
    Coordinate old(*this);
    m_iX= m_iX--;
    m_iY= m_iY--;
    return old;
    }
    // +号运算符重载
	Coordinate operator+(const Coordinate &coor)
    {
    Coordinate add(0,0);
    add.m_iX=m_iX+coor.m_iX;
    add.m_iY=m_iY+coor.m_iY;
    return add;
    
    }
    void show()
    {
        cout << m_iX << m_iY << endl;
    }
public:
	int m_iX;
	int m_iY;
};

int main(void)
{
	Coordinate coor1(1, 3);
	Coordinate coor2(2, 4);
	Coordinate coor3(0, 0);

	coor1--;
	coor1.show();
	--coor2;
	coor2.show();
	coor3 = coor1 + coor2;

	cout << coor3.m_iX << endl;
	cout << coor3.m_iY << endl;

	return 0;
}


正在回答

3 回答

const 修饰无法调用非修饰成员

0 回复 有任何疑惑可以回复我~

以Vc上边的为准好了,比较那才是正规的编译器。我也出现好多这些问题,我就每次填好代码直接拷贝到VS里边去运行的。

0 回复 有任何疑惑可以回复我~

你的前置--运算符和后置--运算符的代码写的一样呀

正确的写法是不需要赋值 等号

直接写 

m_iX--;

而非

m_iX = m_iX --;

0 回复 有任何疑惑可以回复我~
#1

juhhjj 提问者

恩,你说的对,但是这个并不影响结果,因为只是多进行了一次,自己等于自己,并不影响其他运算
2017-04-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

这个代码逻辑正确的,但是书写有地方时错误了,在网页上执行时输出的内容时错误的,vc上执行是正确的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信