강의

멘토링

로드맵

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

ᄋᄉᄋ.님의 프로필 이미지
ᄋᄉᄋ.

작성한 질문수

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

9.10 변환 생성자, explicit, delete

변환생성자와 인수있는 생성자의 차이

해결된 질문

작성

·

373

0

제목 그대로 둘의 차이가 뭔가요?

퀴즈

사용자 정의 타입에 대해 연산자 오버로딩을 하는 주된 목적은 무엇일까요?

코드 실행 속도를 빠르게 하기 위해

사용자 정의 타입을 내장 타입처럼 자연스럽게 사용하기 위해

객체의 메모리 관리를 자동화하기 위해

클래스의 상속 관계를 정의하기 위해

답변 1

5

인수 있는 생성자는 말 그대로 생성자에 인수가 있는 걸 의미하고, 

변환 생성자는 인자의 자료형을 명시적으로 알수 있는 상황에서 한 매개변수로 객체를 생성하는 방법입니다.

(변환 생성자가 인수 있는 생성자의 포함되어 있는 개념이라 보아도 무방하겠군요)

 

사실, 이는 '말'로 이해하기보다는 '코드'로 이해하는 것이 빠릅니다.

 

강의에서 (0:50분~)

 

Fraction frac(7);

doSomething(frac);

 

위 코드로도 정상적으로 생성이 되고,

 

doSomething(Fraction(7));

 

위 코드로도 생성이 되고,

 

doSomething(7);

 

위 코드로도 생성이 되었죠?

 

모두 질문자님의 말씀처럼 인수 있는 생성자라고도 볼 수 있지만,

마지막 예시는 변환 생성자의 예시입니다.

 

강의 내에서 doSomething의 인자는 Fraction이지만,

Fraction의 생성자는 int 하나로도 생성이 되기 때문에 7만으로도 생성이 되는 것이지요.

 

변환 생성자에 대한 다양한 예시는 아래 링크를 참고해보세요.

https://en.cppreference.com/w/cpp/language/converting_constructor

 

새해 복 많이 받으시기 바랍니다. 감사합니다.

 

 

ᄋᄉᄋ.님의 프로필 이미지
ᄋᄉᄋ.
질문자

감사합니다 새해 복 많이 받으세요

ᄋᄉᄋ.님의 프로필 이미지
ᄋᄉᄋ.

작성한 질문수

질문하기