다음은 웹 사이트의 예입니다. http://www.cplusplus.com/doc/tutorial/classes2/ 작동 예제입니다. 그러나 왜 개체 온도가 연산자 + 오버로드 함수에서 반환 될 수 있는지 이해할 수 없습니다. 코드 외에도 몇 가지 의견을 남겼습니다.C++의 함수 내에서 객체 참조를 반환하는 것이 좋은 이유는 무엇입니까?
// vectors: overloading operators example
#include <iostream>
using namespace std;
class CVector {
public:
int x,y;
CVector() {};
CVector (int,int);
CVector operator + (CVector);
};
CVector::CVector (int a, int b) {
x = a;
y = b;
}
CVector CVector::operator+ (CVector param) {
CVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return (temp); ***// Isn't object temp be destroyed after this function exits ?***
}
int main() {
CVector a (3,1);
CVector b (1,2);
CVector c;
c = a + b; ***// If object temp is destroyed, why does this assignment still work?***
cout << c.x << "," << c.y;
return 0;
}
잠재적 인 최적화에 대해 이야기하는 것을 피할 것입니다. 중요한 점은 함수가 (return 문에서) 완료되기 전에 * 의미 상 * 객체가 반환 값 *에 복사된다는 것입니다. 해당 복사본이 최적화되어 있는지 여부는 구현 세부 사항입니다. –