본문 바로가기
C++/수업 내용

[ C++/문제 해결 ] class의 깊은 복사와 임시 객체를 통한 생성 오류

by 왹져박사 2024. 12. 26.

수업 중 이슈 확인

깊은 복사에서 다음 코드 내용과 같이 Player player2 = Player(player1);으로 임시 객체를 만들어 생성 시, 

	Player player1 = Player("Alien", 0, 0);
	Player player2 = Player(player1);

다음과 같은 에러가 생긴다. 

 

1) player2에 player1 임시 객체 할당 전

2) 할당 후, player1.Print();

3) player1.Print();가 끝난 후, 임시 객체를 최적화하여 name 증발

 

4) 최종 출력 화면

 

 

 

다음과 같이 임시 객체를 생성하지 않고 초기화하면 문제가 생기지 않는다!

	//Player player2 = Player(player1);로 임시 객체를 만들어 초기화하면 최적화당해 
        //name이 날아가는 결과 발생!!
	Player player1("Alien", 0, 0);
	Player player2(player1);