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

来源:8-5 拷贝构造及临时对象的优化

mahsiaoko

2020-03-26

老师,您好!

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回答

quickzhao

2020-03-27

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

1
11
weixin_慕勒8023578
回复
quickzhao
Complex c = a + b等价于Complex c(a+b); 那是说要调用一次拷贝函数么
2022-02-28
共11条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程