게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ operator= 할당연산자 오버로딩 질문입니다.
게시물ID : programmer_6425짧은주소 복사하기
작성자 : 드립쳐야지
추천 : 0
조회수 : 1445회
댓글수 : 3개
등록시간 : 2014/11/07 18:05:20
옵션
  • 베스트금지
  • 본인삭제금지
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=) 의 정석이 뭔지 궁금합니다.



전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호