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을 쓰는것을 꺼려한다고 한다 유연성을 위한다고 존재하지만 프로그램의 혼란을 초래할수있기 때문이다.
쓰임은 아주 간단하기 때문에 한개의 예로 간단히 알수있다.
- 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을 쓰는것을 꺼려한다고 한다 유연성을 위한다고 존재하지만 프로그램의 혼란을 초래할수있기 때문이다.