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

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

Seongc좋은ᅵᅵheol Kim님의 프로필 이미지
Seongc좋은ᅵᅵheol Kim

작성한 질문수

C개발자를 위한 최소한의 C++

임시객체와 관련하여 질문드립니다

해결된 질문

작성

·

115

0

강사님 복사 생성자에서 만들어지는 임시객체와 이동생성자에서 만들어지는 임시 객체의 차이를 아무리 테스트해도 모르겠읍니다. 두 생성간에 사용자가 처리하는 로직만 틀릴 뿐인지요?

아울러 선언으로 생성되는 클래스 인스턴스는 스택에 생성되고 new로 생성되는 인스턴스는 heap에 생성되는건지요?

답변 1

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

복사 생성자와 이동 생성자는 호출되는 시점이 다른 것입니다. 이는 언어의 문법에 해당하는 것입니다. 따라서 언제 이동 생성자가 호출되는 것인지에 관해 알아야 합니다. 우선 복사 생성자는

Test a;
Test b(a);

같은 상황에서 호출됩니다. 함수의 매개변수로 Test 클래스 인스턴스가 복사 생성되는 경우가 가장 대표적이라 하겠습니다.

이동 생성자는 Test function(int a); 처럼 반환 형식이 클래스인 경우를 대표적인 경우라 하겠습니다.

Test && a = function(10);

같은 코드를 생각하시면 되겠습니다.

그리고 클래스 인스턴스를 지역 변수이자 자동변수로 선언 및 정의하면 Stack 메모리를 사용하게 되며 new 연산을 통해 생성할 경우 Heap 메모리를 사용합니다. 참고하시기 바랍니다. 😄

Seongc좋은ᅵᅵheol Kim님의 프로필 이미지
Seongc좋은ᅵᅵheol Kim

작성한 질문수

질문하기