728x90
- explict -
explicit는 명시적 호출만 허용하고 묵시적 호출은 허용하지 않는다.
쓰임은 아주 간단하기 때문에 한개의 예로 간단히 알 수 있다.
- 사용 예 -
class AA
{
private :
int v;
public :
explicit AA(int _v) // explicit이 적용된 생성자는 묵시적 형변환을 허용하지 않는다.
{
v = _v;
cout << "값 : " << v << endl;
}
};
- mutable -
mutable은 const명령어를 사용하여 상수화시킨 변수에 대해 예외를 두고 변수를 바꾸지 못하는 제한을 풀어버리는 키워드이다. c++의 유연성을 위해 제공하고 있는데 많은 프로그래머들이 mutable을 쓰는 것을 꺼려한다고 한다. 유연성을 위한다고 존재하지만 프로그램의 혼란을 초래할 수 있기 때문이다.
-- mutable이 적용된 예 --
class MyClass
{
private :
mutable int x; // Mutable 선언
int y;
public :
void SetData(int a, int b) const
{
x = a; // x가 mutable이므로 변경 가능.
y = b; // 에러
}
};
int main()
{
MyClass a;
a.SetData(10, 20);
return 0;
}
728x90
'Basic Programming > C, C++' 카테고리의 다른 글
C++ - 타입 캐스팅(static_cast, reinterpret_cast, dynamic_cast, const_cast) (0) | 2016.03.03 |
---|---|
C++ - auto_ptr의 문제점 (0) | 2016.02.26 |
C++ - 함수 오버라이딩, 가상함수, 다형성 (0) | 2016.02.24 |
C++ - Visual C++에서 동적 메모리 체크하기 (0) | 2016.02.24 |
C++ - 가변 인자 (0) | 2016.02.24 |