26분에 pet을 nullptr로 바꾸는 이유
365
작성한 질문수 14
소멸자에서
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 인턴입니다.
같은 강의에서 이동 대입 연산자와 관련하여 pet을 nullptr로 바꾸는 이유에 대해 궁금하신 점이 있다면, 이에 대한 답변을 강사님께서 제공하신 것이 있습니다. 아래 링크에서 관련 내용을 확인하실 수 있습니다.
- 게시글 제목: _pet = new Pet(*knight._pet);
- 관련 질문 URL: https://www.inflearn.com/questions/240849
이 답변에서는 클래스를 만들 때 컴파일러가 자동으로 만들어주는 함수들(기본 생성자, 소멸자, 복사 생성자, 복사 연산자 등)에 대한 설명과 함께 복사 생성자와 이동 생성자의 동작 원리에 대해 간략하게 설명하고 있습니다. 여기서 얻는 지식을 바탕으로 이동 대입 연산자에서 pet을 nullptr로 바꾸는 이유에 대해 이해하실 수 있을 것입니다.
소스코드와 관련하여 질문드립니다
0
70
1
map 컨테이너의 emplace 함수에 대해
0
113
2
시작이 안되네요...!
0
96
2
EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유
0
126
1
리틀 엔디안 장점 질문합니다.
0
131
1
메모리 창에 주소를 넣었는데 영어 꺠짐
0
124
1
타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.
0
94
2
map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.
1
138
2
hello world 부터 오류 ㅠㅜ
0
188
1
지역변수가 스택? 레지스터
0
129
2
마지막 문제 질문드립니다.
0
164
2
메모리창이 비활성화됩니다.
0
98
1
이중포인터 강좌 부분 질문있습니다.
0
145
1
2를 더하는 이유
0
133
1
메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다
1
110
1
해당 코드는 왜 오류가 날까요?
0
155
1
마지막 문제 질문 있습니다.
0
119
1
강의 마지막부분에 질문이 있습니다.
0
191
2
Field초기화
0
140
1
virtual과 override 차이
0
314
2
3:30 참조자 리턴
0
167
1
map 찾기
0
158
1
프로그램 질문드려요
0
260
1
캐스팅 질문
0
138
1





