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

有个地方貌似讲错了?

这节中,关于+号的运算符重载例子中,貌似有个错误?

Coordinate &Coordinate::operator+(const Coordinate &c)
{
	Coordinate temp(0, 0);

	temp.m_iX = this->m_iX + c.m_iX;
	temp.m_iY = this->m_iY + c.m_iY;

	return temp;
}

这段中,rst是重载函数中的临时对象,感觉不应该这么作返回值呀?而老师却这么做了!

在Ubuntu g++中编译,也会得到警告提示

Coordinate.cpp:49:13: warning: reference to local variable ‘temp’ returned [-Wreturn-local-addr]
  Coordinate temp(0, 0);
             ^

请问我的理解是正确的吗?

正在回答

1 回答

怎么删除这个问题啊。。。是我搞错了,返回不是引用,应该是

Coordinate Coordinate::operator+(const Coordinate &c) {}

而不是

Coordinate& Coordinate::operator+(const Coordinate &c) {}
0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

有个地方貌似讲错了?

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