我正在查看一些代码,在教科书中他们写道:
Vector3 &operator =(const Vector3 &a) {
x = a.x; y = a.y; z = a.z;
return *this;
}
以下代码是否生成相同内容,返回类型,而不是对它的引用(它们都运行):
Vector3 operator =(const Vector3 &a) {
x = a.x; y = a.y; z = a.z;
return *this;
}
我的问题:这两者有什么区别?
感谢 丹尼尔
答案 0 :(得分:1)
Vector3 a, b;
(a = b).x = 3;
在此代码中,a.x
最终应为3
的值。在你给出的第二个例子中,这不会发生。
答案 1 :(得分:0)
Vector3 b(1,2,3);
Vector3 a;
(a = b).x += 2.0;
Print(a.x);
如果使用操作符返回引用,则上面的代码应打印3.0
如果操作员返回值,则会打印1.0