강의

멘토링

로드맵

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

suwoni7335님의 프로필 이미지
suwoni7335

작성한 질문수

홍정모의 따라하며 배우는 C++

15.1 이동의 의미와 스마트 포인터

AutoPtr<Resource> res = new Resource

작성

·

273

0

안녕하세요.

아래 두분이 질문을 주셨었는데요..

AutoPtr<Resource> res = new Resource 

이것은

1. res 객체를 만들고

2. copy constructor 이 실행되어

3. new Resource의 주소가

4. res의 m_ptr 에 복사된다.

이렇게 이해하면 되는것인가요?

퀴즈

41%나 틀려요. 한번 도전해보세요!

C++ 스마트 포인터가 해결하는 주요 문제점은 무엇일까요?

컴파일 오류 방지 일까요?

수동 메모리 관리 문제 (메모리 누수, 이중 해제 등) 일까요?

코드 가독성 향상 일까요?

병렬 처리 성능 개선 일까요?

답변 1

2

음 이 부분은 copy constructor 가 실행 되는게 아니라 AutoPtr의 AutoPtr(T* ptr = nullptr) 이 생성자가 실행되는 것입니다.

복사 생성자가 호출되려면 인자가 똑같은 타입의 객체가 들어와야해요! "AutoPtr<Resource> res = 또다른 AudoPtr 객체" 이런 식이어야 복사 생성자가 호출되는거에요! 

AutoPtr<Resource> res = new Resource 이 식은 그저 AutoPtr 클래스 타입의 res 객체를 만드려는건데 Resource 객체가 인자로 들어갔을 뿐입니다. 

suwoni7335님의 프로필 이미지
suwoni7335

작성한 질문수

질문하기