explicit란
강제로 형변환을 하지 않겠다라는 뜻이다.
class A {
public:
int num;
explicit A(int n) : num(n)
{};
};
void printA(A a) {
std::cout << a.num << std::endl;
}
int main() {
int n = 15;
printA(A(n));
}
printA에 n의값을 넣으면 컴파일러는 자동적으로 A의 생성자를 호출하여 강제로 형변환을 해준다.
하지만 explicit를 선언하게되면 컴파일러는 자동적으로 A의 생성자를 호출하지않고 애러를 띄운다.
이러한 방식은 컴파일러가 파라미터 형 변환을 위해 생성자를 호출하는 것을 막아 버그를 방지할 수 있습니다.
'C++' 카테고리의 다른 글
C++ 콘솔에 문자열 출력하기 (0) | 2020.08.11 |
---|---|
C++ 이란? (0) | 2020.08.11 |
C++ Friend (0) | 2020.07.30 |
C++ 구조체(struct) (0) | 2020.07.20 |
Inline함수 (0) | 2020.01.19 |