본문 바로가기

C++ Language/Tip / Information

explicit 키워드




위 소스를 그대로 컴파일과 실행을 시키게 된다면 특별하게 문제가 되는 곳은 없습니다.
일단 소스에서 main부분을 보게 된다면

Test test1 = 10;

이 부분에서는 객체를 생성해서 거기에 10이라는 값을 넣는다라는 뜻이지만,
묵시적으로 c++ 컴파일러에서 자동으로 생성자로 생성을 하게 됩니다.

그리고

function(10);

이 부분에서도 매개변수로 Test형으로 취해져야 하지만, c++ 컴파일러에서
묵시적으로 Test형으로 변환을 시켜 주게 됩니다.

이렇게 비슷하게 소스를 작성하더라도 별 문제 없이 실행이 되는데,
나중에는 이런 예외 상황 때문에 원치 않는 값이 들어 갈 수도 있게 됩니다.

그래서 위처럼 묵시적으로 타입 변환을 원치 않을 경우

밑의 소스처럼 사용을 할 수 있습니다.




위 소스 처럼 클래스에서 생성자를 선언 할 때 explicit 키워드를 사용하시면 됩니다.
즉, 묵시적인 타입 변환을 하지 않고 명시적으로 타입 변환을 하였을 경우에만 사용하겠다는 뜻입니다.

그래서 똑같은 소스에서 묵시적으로 타입변환이 되었던

Test test1 = 10;
function(10);

이 두문장이 에러가 나게 되는 것입니다.

그래서 왠만하면 explicit 키워드를 이용해서 예외 상황을 조금 줄이는 것도 괜찮을 것이라

생각이 듭니다.

'C++ Language > Tip / Information' 카테고리의 다른 글

const_cast 키워드  (0) 2010.02.12
mutable 키워드  (0) 2010.02.12
상수함수란?!  (0) 2010.02.12
C++ 코딩 스타일(제가 사용하는 코딩 스타일입니다.)  (0) 2009.04.29
C++언어가 C언어와 달라진 점  (1) 2009.04.29