Programmer Application Note

2015년 8월 9일 일요일

복사생성자와대입연산자 코딩 시 주의 할 점

오후 6:05 Posted by PAN.SPOT , No comments
디폴트 대입연산자를 사용하지 않고 직접 코딩 한다면 우측 연관 연산을 고려하여 자기자신의 참조자를 반환하도록 하자. 또한 자기 대입에 대한 처리도 하자.
우측연관 연산의 예
x = y = z = 15;
자기 대입에 대한 예
x = x; , a[i] = a[j];
class Widget{
   Widget(const Widget& rhs); 
   Widget& operator=(const Widget& rhs);
}
Widget& Widget::operator=(const Widget& rhs)
{
   Widget temp (rhs); // 자기 대입에 대한 처리
   swap(temp); // 자기 대입에 대한 처리 
   return *this; //우측연관 연산 처리 
}
복사생성자와 대입연산자를 코딩할때는 모든 맴버를 복사하도록 하자
class Customer{
   Customer(const Customer& rhs); 
   Customer& operator=(const Customer& rhs);
private:
   sting str;
   Data data;
}
str,data도 반드시 복사 하도록 하자.
class ACustomer : Customer{
     Customer(const Customer& rhs) : Customer(rhs) 
     {
     .....   
     }
     Customer& operator=(const Customer& rhs)
     {
        Customer::operator=(rhs);
     }
}
위와 같이 베이스 클래스의 생성자와 대입연산자를 호출하여, 베이스 클래스의 복사도 해주자.

0 개의 댓글:

댓글 쓰기