return 값으로 임시객체를 생성시 생성자가 호출이 안되나요??
조회수 1167회
#include <iostream>
class Point
{
int x, y;
public:
Point(int a = 0, int b = 0) : x(a), y(b) {std::cout << "생성자 실행"<< std::endl;}
friend Point operator+(const Point& p1, const Point& p2);
};
Point operator+(const Point& p1, const Point& p2)
{
return Point(p1.x+p2.x, p1.y+p2.y);
}
int main()
{
Point(1,1);
Point p1(1,1);
Point p2(2,2);
Point p3 = p1+p1;
}
함수 실행하면
- 메인함수 첫 줄에서 임시객체 생성,
- p1 생성,
- p2 생성,
- +operator 함수에서 리턴값으로 임시객체 생성
- p3 생성
총 5번의 "생성자 실행" 글이 나오는 줄 알았는데 4번 밖에 안나오더군요...
메인함수 첫 줄을 지우면 총 3번의 "생성자 실행" 글이 나오는 걸로 봐서 +operator에서 리턴값으로 생성된 임시객체에서 생성자가 호출이 안된것 같은데 제 생각이 맞나요? 생성자가 없이 객체 하나가 생성될 수도 있나요..??
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력