개발/C++

[C++] 생성자 explicit

hojak99 2016. 10. 1. 12:01

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선언을 우선적으로 해야한다고 한다.

반응형