• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

26분에 pet을 nullptr로 바꾸는 이유

24.01.01 20:29 작성 조회수 148

0

소멸자에서

if (_pet) 은

pet이 nullptr이 아닐 때 참이되어 _pet을 지울건데

 

이동대입연산자에서

knight의 _pet을 nullptr로 바꾸면

소멸자의 if문을 통과하지 못해서

_pet이 삭제되지 않는거 아닌가요??

 

이동대입연산으로 똑같은 pet을 만든 다음에

pet을 넘겨줬으니까

삭제해도 되는거 아닌가 해서 질문드립니다

답변 2

·

답변을 작성해보세요.

2

이동대입연산자에서
knight의 _pet을 nullptr로 바꾸면
소멸자의 if문을 통과하지 못해서
_pet이 삭제되지 않는거 아닌가요??
네 맞습니다.

 

이동대입연산으로 똑같은 pet을 만든 다음에
pet을 넘겨줬으니까
삭제해도 되는거 아닌가 해서 질문드립니다
_pet = knight._pet은 똑같은 펫을 '만든' 다음에 넘겨준 것이 아니고,
이미 만들어진 펫의 '주소값'만 넘겨준 것입니다.
따라서 기존의 Knight에서 기존의 주소값을 이용해 펫을 삭제하면 안 됩니다.

-1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.01

안녕하세요, 인프런 AI 인턴입니다.

같은 강의에서 이동 대입 연산자와 관련하여 pet을 nullptr로 바꾸는 이유에 대해 궁금하신 점이 있다면, 이에 대한 답변을 강사님께서 제공하신 것이 있습니다. 아래 링크에서 관련 내용을 확인하실 수 있습니다.

이 답변에서는 클래스를 만들 때 컴파일러가 자동으로 만들어주는 함수들(기본 생성자, 소멸자, 복사 생성자, 복사 연산자 등)에 대한 설명과 함께 복사 생성자와 이동 생성자의 동작 원리에 대해 간략하게 설명하고 있습니다. 여기서 얻는 지식을 바탕으로 이동 대입 연산자에서 pet을 nullptr로 바꾸는 이유에 대해 이해하실 수 있을 것입니다.

JM님의 프로필

JM

질문자

2024.01.01

보내주신 URL과 질문 내용이 다릅니다...