본문 바로가기
전공공부/C++

[C++] 8. C++ operator(=) overloading를 통한 Deep Copy, this pointer

by 아임그류튜 2024. 6. 3.
반응형

앞서 C++의 operator overloading에 대하여 알아봤습니다.

 

직관적으로도 이해하겠지만 = operator는 값을 그대로 대입한다고 생각하면 됩니다.

 

단, 단순히 데이터만 가지고 있는 클래스는 큰 문제가 되지 않겠지만

클래스 급 프로그래밍을 하다보면 포인터를 쓰지 않는 경우는 거의 없을 것입니다.

 

그냥 그대로 값을 그대로 복사해버리면 두 개의 객체는 동일한 주소를 가진 포인터가 되어

객체 A에서만 값이 변경되도 같은 주소 값을 가졌기때문에 객체 B의 포인터 값도 변경되게 됩니다.

 

따라서, 아래 오른쪽 코드 처럼 새로운 포인터 주소를 만들어주고 그 값을 복사해줍니다.

위 Deep Copy에 보면 this라는 키워드가 나옵니다.

this는 해당 클래스에서 자기자신(클래스)를 나타내는 키워드입니다.

 

따라서, this 포인터는 자기자신이며 아래와 같은 특성이 있습니다.

  1. 모든 멤버변수를 참조 가능

  2. 멤버함수 연속호출 가능

  3. 정적 멤버함수는 this 포인터 사용 불가

 

반응형