본문 바로가기
::public/C++

explicit

by 해맑은욱 2023. 7. 6.

자신이 원하지 않은 형변환이 일어나지 않도록 제한하는 키워드

class A
{
public:
    int num = 1;
    
public:
	// 1. non explicit
    A(int n) : num(n) {};
    // 2. explicit
    explicit A(int n) : num(n) {};
    
    void printA(A a)
    {
        cout << a.num << endl;
    }
};

int main()
{
    int i = 11;
    // 1번의 경우 컴파일러가 인자를 A 형태로 자동으로 바꿈.
    printA(i);	// compile ok.
    
    // 2번의 경우 사용자가 원치 않은 형변환이 일어나는 걸 막을수 있음.
    printA(i);		// compile error.
    printA(A(i));	// compile ok. 형변환을 해줘야 함.
}

'::public > C++' 카테고리의 다른 글

const 위치에 따른 의미  (0) 2023.07.05
*개념을 항상 생각하고 정리하자!  (0) 2023.06.22
(c++11) lambda  (0) 2023.02.08
(C++11) std::move  (0) 2023.01.31
(C++11) alignas  (0) 2023.01.18