const가 붙으면 수정이 안 됨 (되게 만드는 경우도 있지만 그럴 거면 const 붙이지 말자)
class ConstClass
{
public:
ConstClass() {}
~ConstClass() {}
void SetValue(int value)
{
m_Value = value;
//m_ConstValue = 0;
}
int GetValue() {
return m_Value;
}
const int m_ConstValue = 0;
int m_Value;
};
class Test
{
public:
Test() {}
~Test() {}
void SetValue(ConstClass& cc) const
{
cc.SetValue(1);
}
};
int main()
{
Test test;
ConstClass cc;
test.SetValue(cc);
const ConstClass ccc;
//ccc.GetValue();
return 0;
}
주석 처리한 건 다 에러 나는 부분
기본적으로 const가 붙은 멤버 변수를 수정하려고 하면 에러가 남
const ConstClass ccc;
같은 경우는 const로 클래스 객체를 만드는 건데
해당 클래스의 일반 메소드들을 호출하면 에러가 남
int GetValue() const{
return m_Value;
}
요런 식으로 메서드 뒤에 const를 붙여줘야 함
const를 붙여주면 함수 오버로딩이 되니 같은 이름으로 사용 가능
void SetValue(ConstClass& cc) const
{
cc.SetValue(1);
cc.m_Value = 2;
}
const 함수 내에서 다른 클래스 멤버를 변경하는 건 상관없음 (const 붙은 멤버는 당연히 안 됨)
웬만하면 const 붙일만한덴 다 붙이자
혼자 공부하면서 에러나서 왜 안 되지 하다가 어이없이 막 붙여놔서 다시 정리할겸 써봄..
'개발 > C++' 카테고리의 다른 글
C++ 퀵 소트 (빠른 정렬) 구현해보기 (0) | 2019.06.21 |
---|---|
C++ 머지 소트(병합 정렬) 구현해보기 (0) | 2019.06.21 |
C++ shared_ptr 사용할 때 주의할 점 (0) | 2019.05.24 |
컴파일러 최적화 (0) | 2019.05.13 |
C++ 스마트 포인터 (0) | 2019.05.07 |