분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
옵션 |
|
// 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=) 의 정석이 뭔지 궁금합니다.
죄송합니다. 댓글 작성은 회원만 가능합니다.