explicit keyword는 원하지 않는 형변환이 일어나지 않도록 제한한다.
#include <iostream>
class A {
public:
int num;
A(int n) : num(n) { } // (1)
explicit A(int n) : num(n) { } // (2)
};
void print(A a) {
pstd::cout << a.num << std::endl;
}
int main() {
int n = 26;
printA(n);
}
함수 인자로 들어오는 int형이 자동으로 A 클래스로 형변환이 일어난다. (1)
이를 막기위해 생성자에 explicit 키워드를 붙인다. (2)
explicit keyword를 붙이면 compiler가 자동으로 형변환을 하는 것을 막을 수 있다.