explicit

2022. 4. 18. 07:01C++

explicit

explicit을 사용하면 더 이상 묵시적 변환이 발생하지 않아 대입연산자를 이용한 객체의 생성 및 초기화가 불가능하다.

class SoSimple
{
private:
    int num1;
    int num2;
public: 
    SoSimple(int n1, int n2) : num1(n1),num2(n2)
    { }
    explicit SoSimple(SoSimple &copy): num1(copy.num1), num2(copy.num2)
    {
    }
    void ShowSimepleDate()
    {
        cout<<num1<<endl;
        cout<<num2<<endl;
    }
};

int main(void)
{
    SoSimple sim1(15,20);

    SoSimple sim2 = sim1;   //에러발생!
    SoSimple sim3(sim1);
    
    sim2.ShowSimepleDate();
    return 0;
}

묵시적변환이 많이 발생하는 코드일수록 코드의 결과를 예측하기가 어려워진다. 

explicit는 코드의 명확함을 더하기 위해 자주 사용되는 키워드 중 하나이다. 

'C++' 카테고리의 다른 글

precision, fixed  (0) 2022.04.25
깊은 복사 / 얕은 복사  (0) 2022.04.18
copy constructor  (0) 2022.04.16
학번, 중간성적, 기말성적 입력 프로그램  (0) 2022.04.14
mutable  (0) 2022.04.10