请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Complex c=a+b;这一步的疑问

老师,您好!

Complex Complex::operator+(const Complex& x) {
	//Complex tmp;
	//// tmp._real = tmp._image=0;
	//tmp._real = _real + x._real;
	//tmp._image = _image + x._image;
	//return tmp;
	return Complex(_real + x._real, _image + x._image);
}
Complex& Complex::operator=(const Complex& x) {
	if (this != &x) {
		_real = x._real;
		_image = x._image;
	}
	
	return *this;
}
Complex c=a+b;

我进行断点跟踪发现,运行到

return Complex(_real + x._real, _image + x._image);

这一步,有下面的情况
图片描述
发现是对c的直接初始化,然后那个赋值操作就不存在了。这个不是很懂

正在回答

1回答

这个操作实际上是定义Complex C的操作,不是赋值操作。

1 回复 有任何疑惑可以回复我~
  • 提问者 mahsiaoko #1
    能不能说的详细一点,为什么是直接定义?这个我不理解
    回复 有任何疑惑可以回复我~ 2020-03-27 00:31:41
  • quickzhao 回复 提问者 mahsiaoko #2
    Complex c之前没有定义,第一次定义不是赋值操作。Complex c = a + b等价于Complex c(a+b);
    回复 有任何疑惑可以回复我~ 2020-03-27 00:49:45
  • 提问者 mahsiaoko 回复 quickzhao #3
    好的,了解了,谢谢老师
    回复 有任何疑惑可以回复我~ 2020-03-27 00:55:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信