인프런 커뮤니티 질문&답변
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 객체가 인자로 들어갔을 뿐입니다.





