[Effective C++] #10 대입 연산자와 *this의 참조자
Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 10 "대입 연산자는 *this의 참조자를 반환하게 하자"에 해당하는 내용입니다.
대입 연산자
대입연산자 = { =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= }
class A {
public:
...
A& operator=(const A& 우변객체){
...
return *this;
}
};
대입 연산자는 위 코드에서 살펴본 대로, "= *= /= %= += -= <<= >>= &= ^= |="를 의미합니다. "="의 경우 단순 할당 연산자로, 우변의 피연산자의 값이 좌변의 피연산자로 지정된 객체에 저장되도록 합니다. 클래스 형식의 객체에 대한 할당은 "operator="함수에 의해 실행됩니다. 이 연산자 함수의 기본 동작은 비트 복사를 수행합니다. 그 외의 것들은 복합 할당자로 각각의 역할이 다릅니다.
좌변 객체의 참조자를 반환
clas A {
public:
A& operator+=(const A& 우변_객체){ // A&, A 객체에 대한 참조자를 반환값으로 설정
...
return *this;
}
};
대입 연산자는 좌면 인자에 대한 참조자를 반환하도록 구현해야 합니다. 단순 할당자를 다루는 대입 연산자(operator=) 뿐만 아니라, 모든 형태의 대입 연산자에도 이 약속은 지켜져야 합니다!
대입 연산자는 *this를 반환하도록 합시다
'언어 > Effective C++' 카테고리의 다른 글
[Effective C++] #13 자원 관리 객체, std::auto_ptr, std::shared_ptr (0) | 2022.01.14 |
---|---|
[Effective C++] #11 중복 참조와 자기 대입 연산자 (0) | 2022.01.12 |
[Effective C++] #9 가상 함수를 호출하는 생성자, 소멸자 (0) | 2022.01.10 |
[Effective C++] #8 소멸자가 던지는 예외 (0) | 2022.01.10 |
[Effective C++] #7 기본 클래스와 가상 소멸자 (0) | 2022.01.07 |