http://msdn.microsoft.com/ko-kr/library/7ac5szsk.aspx ㄴ코드 참조
// Define assignment operator. Point &Point::operator=( Point &ptRHS ) { _x = ptRHS._x; _y = ptRHS._y; return *this; // Assignment operator returns left side. }
부분에
pt1 = pt2 = pt3; 연속 대입문을 위한 할당연산입니다.
여기서
void Point::operator=(const Point &rhs) { _x = rhs._x;
_y = rhs._y;}
연산자 오버로딩을 했습니다.
이 연산자는 pt1 = pt2 = pt3; 와 같은 연속 대입문을 사용할 수 없습니다.
전문가를 위한 c++ 에서는
대입연산자를 void를 하든 상식적으로 연산자가 호출된 객체의 참조를 리턴하도록 권장합니다. 라고 말합니다.
Point& operator=( Point &ptRHS )
void operator=(const Point &rhs)
로 오버로딩은 가능하지만
Point& operator=(const Point &ptRHS )
void operator=(const Point &rhs)
불가능합니다.
하지만 Point에 대한 값을 변경하지 않으므로 const를 붙이는게 맞습니다만 파라미터의 갯수로 함수의 다름을 판단하므로
const를 제거하여 쓰면 되지만 꼼수처럼 보입니다.
질문 사항은 assignment operator (operator=) 의 정석이 뭔지 궁금합니다.