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;

}

 

출처 : http://blog.naver.com/sorkelf/40146367692

728x90

+ Recent posts