2015년 9월 30일 수요일

[C++] explicit

explicit
: 생성자와 변환 연산자가 암시적 변환이나 복사-초기화가 동작하지 않도록 함





foo함수를 호출할 때 class가 아니라 integer를 넣어줘도 동작한다.
컴파일러는 Stack class를 조사하여 호출이 가능한지 확인하는데,
결국엔 foo(Stack(20)); 으로 변경하여 호출하게 된다.

생성자가 마치 변환 연산자 처럼 사용되어 '변환 생성자'라고 불린다.
C++에서 변환생성자는 따로 있는 것이 아니라, parameter 가 하나인 생성자는 모두 변환 생성자가 될 수 있다.



생성자에 explicit 키워드를 선언함으로써 암시적 변환되어 복사-초기화가 되지 않도록 한다.







댓글 없음:

댓글 쓰기

[C++] meta programing

재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...