。공부 。

<C++> explicit 와 mutable

kyoe 2007. 12. 9. 20:42
explicit는 명시적 호출만 허용하고 묵시적 호출은 허용하지 않는다
쓰임은 아주 간단하기 때문에 한개의 예로 간단히 알수있다.

- explict이 적용된 예 -
class AA{
    int v;

public:
    explicit AA(int _v){      //explicit이 적용된 생성자 는 묵시적 형변환을 허용하지 않는다.
        v=_v;
        cout<<"값: "<<v<<endl;
    }
};

int main(void){
    //AA uu=20;        //묵시적 형변환을 허용하지 않는 explicit를 쓴 함수또는 생성자를 호출시 에러 발생
    AA vv(10);        //c++스타일 초기화를 해야 exiplicit 문을 쓴 함수또는 생성자를 호출할수있다
    return 0;
}

- mutable -
mutable은 const에 예외를 둔다는 것이다 C++의 유연성을 위해 제공하고 있는데 많은 프로그래머들이 mutable을 쓰는것을 꺼려한다고 한다 유연성을 위한다고 존재하지만 프로그램의 혼란을 초래할수있기 때문이다.