前置++既然返回了对象本身,那么为什么修改e的值不会影响到d呢

来源:8-6 前置与后置操作符

三尺357159

2024-06-18

	Complex a(3.0, 2.0);
	Complex b(2.0, 3.0);
	Complex c = a + b;
	Complex d(c); // 5.0 5.0

	Complex e;  
	e = ++d;  // e =6.0 6.0 d = 6.0 6.0
	cout << e.image() << " " << e.real() << endl;
	cout << d.image() << " " << d.real() << endl;
	e.real(9.0);
	cout << e.image() << " " << e.real() << endl;  输出 6 9
	cout << d.image() << " " << d.real() << endl;  // 这里输出的还是6 6而不是 6 9

老师,前置++返回的是引用对象本身,那么为什么修改e的属性,不会影响到d呢,e跟d不是使用同一块内存空间的吗

写回答

1回答

quickzhao

2024-06-19

前置增量操作符++d返回d的引用,赋值操作符e = ++d将d的值拷贝给e。这意味着e和d在赋值后虽然值相同,但它们是两个独立的对象,存储在不同的内存空间中。因此,修改e的值不会影响d的值。

0
1
三尺357159
非常感谢!
2024-06-19
共1条回复

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

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

3884 学习 · 1103 问题

查看课程