[C++] explicit에 대한 이야기

explicit에 대한 이야기


Explicit란 단어의 사전적 의미는 '분명한, 명쾌한' 입니다.

단어만 봐도 느낌이 옵니다. 개발자의 의도와는 다르게 사용될 여지가 있거나, 그러면 안되는 곳에 쓰일 것 같아요.


간단한 예제입니다.



int형을 클래스 A에 대입하는 이 때 암시적 타입 변환이 이루어 집니다. 만약 생성자를 explicit으로 선언한다면


 

이렇게 명시적으로 변환 하는것만 가능하도록 합니다.


Effective C++ 책에는


필자의 경우, 암시적 타입 변환에 생성자가 사용될 여지를 남겨둘 뚜렷한 이유가 없는 한, 생성자는 explicit 선언을 우선적으로 합니다. 여러분도 주저 마시고 이런 식으로 해 보시기를 적극 추천하는 바입니다.

라고 쓰여있다.


앞으로 생성자를 만들땐 explicit을 붙이는 것을 습관화 해야겠습니다.