2014-11-29 4 views
1

я искал через некоторый код, в учебнике, и они писали:возвращает ссылку против типа

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

мой вопрос: в чем разница между этими двумя?

благодаря Даниель

ответ

1
Vector3 a, b; 
(a = b).x = 3; 

В этом коде a.x должен в конечном итоге со значением 3. Во втором примере, который вы даете, этого не произойдет.

+0

этой ссылка: http://www.learncpp.com/cpp -tutorial/74a-return-values-by-value-reference-and-address/помог прояснить этот момент – dgamma3

0
Vector3 b(1,2,3); 
Vector3 a; 

(a = b).x += 2.0; 

Print(a.x); 

Если вы используете оператор возвращение Refernce, приведенные выше код должен напечатать 3,0

В случае оператора возвращающих значений будет печататься 1,0

Смежные вопросы