返回引用vs类型

时间:2014-11-29 00:44:20

标签: c++

我正在查看一些代码,在教科书中他们写道:

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;
}

我的问题:这两者有什么区别?

感谢 丹尼尔

2 个答案:

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