인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

JM님의 프로필 이미지
JM

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

오른값 참조 (rvalue reference)

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

작성

·

310

0

소멸자에서

if (_pet) 은

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

 

이동대입연산자에서

knight의 _pet을 nullptr로 바꾸면

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

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

 

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

pet을 넘겨줬으니까

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

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

 

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

-1

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

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

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

JM님의 프로필 이미지
JM
질문자

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

JM님의 프로필 이미지
JM

작성한 질문수

질문하기