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

yongyong96님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

타입 변환 생성자에 대해서 궁금한 점이 있습니다.

21.10.12 01:31 작성

·

272

0

안녕하세요 루키스님.

타입 변환 생성자에 대해 궁금한 점이 있어서 여쭤보러 왔습니다.

 

타입 변환 생성자로 인해 Knight(int hp) { ~~ }  , Knight k , k = 3

이런식으로 컴파일러가 자동으로 형변환을 시켜주어서 불리지 말아야 할 타입 변환 생성자가 불리는 것으로 알고 있습니다.

 

그것을 막기 위해 explicit을 써주어서 컴파일러의 자동 형변환을 막는 것이고 위와 같이 대입 연산자를 통해 객체가

생성되는 것을 막는 것이라고 이해했는데요..

 

그렇다면 앞으로 클래스를 만들 때 매개변수에 1개만 존재하는 타입 변환 생성자 같은 경우에는 무조건적으로

explicit 키워드를 붙이는 것이 좋은 것인가요?!

 

반대로 그냥 explicit 키워드를 사용하지 않고 타입 변환 생성자를 의도적으로 사용하는 사례가 있나요?

아무리 봐도 클래스 자료형에 다른 기본 자료형을 대입해서 무엇인가 행위한다는 것은 위험한 일인거 같고 왠만하면

지양하는게 맞다고 생각하는데 제가 생각하고 있는 내용이 확실한지 잘 모르겠습니다. 

 

타입 변환 생성자를 의도적으로 사용하는 사례가 있는지와 타입 변환 생성자 같은 경우에는 왠만하면 explicit을 꼭 붙여주는게

좋은지에 대해 궁금합니다. 

답변 2

0

yongyong96님의 프로필 이미지
yongyong96
질문자

2021. 10. 13. 12:50

친절한 답변 감사드립니다!!

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 10. 12. 10:42

네 그냥 항상 explicit을 붙여주면 손해보진 않습니다.
관련 내용은 Effective C++ 에서도 나옵니다.
(Effective C++과 Effective Modern C++은 필수로 읽어봐야 할 도서들입니다.
보통 회사를 가면 신입 스터디로 꼭 저 두권을 읽게 합니다.)

그런데 막상 회사를 가면 귀찮아서(?) 그런지
그렇게 일일히 해주는 사람은 별로 없습니다.