본문 바로가기

C++

C++ explicit

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