복사대입연산자

자신과 같은 타입의 객체를 받아 초기화하는 것

 

 

디폴트 복사대입연산자

복사대입연산자가 없어도 기본복사대입연산자가 호출된다.

 

 

복사대입연산자 선언

복사대입연산자를 오버라이딩을 통해 구현 할 수 있다.

return의 값을 *this로 해주는 것이 핵심이다.

 

 

복사대입연산 방지

복사대입연산자에 delete 키워드를 이용하여 삭제한다

대입을 시도할 경우 컴파일 에러가 난다.

 

 

얕은 복사

기본 복사대입연산자는 얕은 복사를 한다

player2와 player1이 모두 같은 변수의 주소를 가리키고 있다.

변수를 수정하면 두 클래스 모두 영향을 받는다.

또한 할당한 메모리를 제거하고 있지 않아 메모리 누수가 난다.

 

소멸자에서 메모리 할당을 해제하면

두 클래스의 m_iHealth값이 같으므로

먼저 소멸자가 호출된 클래스는 정상적으로 작동하지만

다음 소멸자가 호출된 클래스는 주소를 가리키고 있지만

접근 권한이 없어 런타임 에러가 나게 된다.

 

 

깊은 복사

복사대입연산시 새롭게 할당해 새로운 주소값을 가리키도록 한다.

소멸 시에도 정상적으로 메모리를 해제한다.

'C++' 카테고리의 다른 글

[C++] 참조자  (0) 2023.05.15
[C++] const  (0) 2023.05.13
[C++] 복사생성자  (0) 2023.05.11
[C++] 소멸자  (1) 2023.05.10
[C++] 생성자  (0) 2023.05.09

+ Recent posts