나는 다음과 같이 클래스가 정의되어 :C++ 암시 적 복사 생성자와 할당 연산자
#include <iostream>
using namespace std;
class Point
{
int x, y;
public:
Point(int a, int b) : x(a), y(b)
{
std::cout << "Constructing point (" << a << ", " << b << ") "
<< std::endl;
}
Point(const Point& p) : x(p.x), y(p.y)
{
std::cout << "In copy constructor " << p.x << " " << p.y
<< std::endl;
}
Point& operator=(const Point& p)
{
std::cout << "In assignment operator " << p.x << " " << p.y
<< std::endl;
x = p.x;
y = p.y;
return *this;
}
};
int main()
{
Point p1 = Point(1, 2);
return 0;
}
을 지금은이 Constructing point (1, 2)
내가 볼 전부입니다 실행할 때. 나는 컴파일러가 여기에 최적화를하고 있다고 가정하고있다. 이론상 임시가 생성 된 다음 p1을 초기화하기 위해 대입 연산자가 호출되는 것이 맞습니까?
확인이 말이 - 나는 포인트 P2 = P1'시도;'와 그것뿐만 아니라 복사 생성자라고, 그래서 나는 마크로부터 완전히 벗어나지 않았습니다, 환호! –