mutable

2022. 4. 10. 12:47C++

const 함수 내에서의 값의 변경을 예외적으로 허용한다. 

 

#include <iostream>
using namespace std;

class SoSimple
{
private:
    int num1;
    mutable int num2;   //const 함수에 대해 예외를 둔다.!
public: 
    SoSimple(int n1, int n2) :num1(n1),num2(n2)
    { }
    void ShowSimpleData() const{
        cout<<num1<<", "<<num2<<endl;
    }
    void CopyToNum2() const{
        num2 = num1;	// const함수 내에서 num2에 저장된 갑슬 변경하고 있다. 
    }					// 이는 num2가 mutable로 선언되었기 때문에 가능하다. 
};

int main(void)
{
    SoSimple sm(1,2);
    sm.ShowSimpleData();    //1, 2
    sm.CopyToNum2();
    sm.ShowSimpleData();    //1, 1
    return 0;
}

 

하지만 mutable의 과도한 사용은 const의 선언을 의미없게 만들어버린다. 

그렇기에 mutable의 사용은 추천하지 않는다. 

'C++' 카테고리의 다른 글

copy constructor  (0) 2022.04.16
학번, 중간성적, 기말성적 입력 프로그램  (0) 2022.04.14
static  (0) 2022.04.10
friend  (0) 2022.04.10
연산자 오버로딩  (0) 2022.04.10