explicit 의 의미
explicit: explicit로 선언된 생성자는 암시적인 타입 변환을 수행하는데 쓰이지 않게 된다. 그러나 타입 변환이 명시적으로 되는 곳에는 생성자를 쓸 수 있다.
[생성자 explicit 예]
class ABC{
public:
explicit ABC(int x=0, int y=0);
ABC(bool a=true, int a=0);
};
ABC a;
a = 10; //오류. explicit 때문에 암시적 타입 변환 X
a = true; //Good
a = ABC(10); //Good. explicit로 선언된 생성자는 명시적 타입 변환은 된다!
이렇게 explicit를 사용하면 코딩할 때 바라지않던 타입 변환을 막아 주기 때문에 암시적 타입 변환에 생성자가 사용될 여지를 남겨둘 이유가 없는 한 생성자에 explicit선언을 우선적으로 해야한다고 한다.
반응형