본문 바로가기

Language/C++

explicit 와 mutable



explicit - 문장은 생성자 함수를 선언할때 앞에 키워드로 붙여서 사용한다.

C언어 스타일로 생성자 함수를 호출시 (ex : AAA a1 = 10;) 생성자 함수가 묵시적

으로 호출이 되게 되는데 이를 허용하지 않는것이다.

C계열이 아닌 다른 프로그램언어를 사용하는 프로그래머가 가독을 하게 될때 여기서

혼란을 야기할수도 있다. 그것을 방지 하기 위함이다. (중요도는 별반...ㅋㅋ)

mutable - const 키워드가 붙은 문장에 예외를 두게 된다.
 
 const 를 사용하여 만든 멤버 함수안에서 변수에 값을 대입하고자 할때 nutable 키워드를

 사용하여 선언한 변수에 대해서는 error 를 발생하지 않는다.

 ex)
 class AAA
{
private:
    mutable int val1;
    int val2;
public:
    void SetData(int a, int b) const
    {
        val1=a;//val1이 mutable이므로 OK
        val2=0;//error
    }

};

int main(void)
{
    AAA a1;
    a1.SetData(10,20);
    return 0;
}

프로그래머들에게 유연성을 제공하기 위해서 만든 키워드이지만 전문가들은 사용 하지 않는것이 좋다고 한다.
차라리 const를 빼고 사용하라고...ㅡㅡa