책 정리/Effective C++ 2판
항목 15. operator= 이 *this에 대한 레퍼런스(reference)를 리턴(return)하도록 한다.
최익필
2008. 5. 8. 00:19
항목 15. operator= 이 *this에 대한 레퍼런스(reference)를 리턴(return)하도록 한다.
이유
1. 연속적인 치환을 할 수 없게 된다.
2. 클래스를 사용하는 코드에서의 묵시적인 타입 변환도 할수 없게 된다.
3. const 레퍼런스로 받은 객체를를 &로 넘겨주지 못하게 된다.
4. 1,2,3 통틀어 객체도 기본자료형과 동일한 취급을 위해서다.
예) a = b = c = z = 1; 을 연산할수 있다!
해결 방법
1. 객체의 대입연산시 operator=을 수정하게 된다면 *this로 반환하게 만든다.
주의 사항
1. 혹시 기교를 위하여 다른값으로 넘겨주길 원하는 순간부터가 주의 사항이다!
개인적인 생각, 이래나 저래나 operator= 은 left.operator=(right)으로 작동된다는 점을 기억하면 this로 해야 한다는것은 쉽게 알수 있을것이다
이유
1. 연속적인 치환을 할 수 없게 된다.
2. 클래스를 사용하는 코드에서의 묵시적인 타입 변환도 할수 없게 된다.
3. const 레퍼런스로 받은 객체를를 &로 넘겨주지 못하게 된다.
4. 1,2,3 통틀어 객체도 기본자료형과 동일한 취급을 위해서다.
예) a = b = c = z = 1; 을 연산할수 있다!
해결 방법
1. 객체의 대입연산시 operator=을 수정하게 된다면 *this로 반환하게 만든다.
주의 사항
1. 혹시 기교를 위하여 다른값으로 넘겨주길 원하는 순간부터가 주의 사항이다!
개인적인 생각, 이래나 저래나 operator= 은 left.operator=(right)으로 작동된다는 점을 기억하면 this로 해야 한다는것은 쉽게 알수 있을것이다