해결된 질문
20.08.19 00:45 작성
·
224
0
지금 제가 시험을 해봤는데 cout<<p1+p2+p3가 잘되거든요
근데 만들면서 생각한게 chaning이 되야하니까 operator+의 반환타입을 객체 그 자체로 해야한다고 생각했어요 왜냐면 체이닝을 해야한다고 생각을했거든요 그러니까
(p1+p2)에서 나온 Point의 객체+p3라고 생각을 해서 .
그런데 오히려 반환형에 &를 붙이면 lvalue~~하면서 오류가 나오고
없애면 잘 되네요.
조금 헷갈리는데 제가 생각한게 틀렸나요?
답변 4
1
안녕하세요? 생각하신것은 맞습니다. 그런데....
현재 구현하신 코드의 operator+ 의 반환해주는 Point 는 reference로 return 을 해주면 문제가 생깁니다.
함수가 끝이나면 Point 는 어떻게 될까 생각해보시면 좋을 것 같습니다.
다음부터는 제가 코드를 바로 실행할 수 있도록 아래와 같이 올려주셨으면 좋겠네요. 이미지도 좋지만 제가 바로 실행할 수 있게 올려주시는 편이 좋습니다.
Point &operator+(Point &a, Point &b)
{
a.x = a.x + b.y;
a.y = a.y + b.y;
return a;
}
0
0
0
2020. 08. 19. 18:43
흠...cout<<(p1+p2+p3);라고 한다면..
p1+p2에서 point(?,?)가 반환이되야지만 + p3해줄때 operator+가 작동되지 않을까요
operator+는 함수 파라미터로 const Point&a, const Point&b니까 Point형 객체가 필요하기도 하구요 ㅠㅠ
아직 잘 이해가 안갑니다 ㅠ