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