**const 멤버 변수
class Obj{
private:
const int iNum;
public:
Obj(){iNum = 100} 상수이기 때문에 대입을 통한 초기화 불가능
};
clss Obj{
private:
const int iNum;
public:
Obj():iNum(100){} 이니셜라이저를 통한 초기화
}
이니셜라이저를 사용하여 상수를 초기화 할 수 있다
대입을 통한 초기화 보다 속도가 더 빠름
**const 멤버 함수
class Obj{
private:
const int iNum;
public:
void Render()const {cout << iNum << endl;} 읽기 전용 함수
};
읽기 전용 함수에서 '멤버 변수'의 쓰기는 불가능하다
멤버 변수가 아닌 다른 변수들의 값 쓰기는 가능하다
멤버 함수 안에서는 읽기 전용 멤버 함수만 호출 할 수 있다.
class Obj{
private:
const int iNum;
public:
void Render()const {cout << iNum << endl;} 읽기 전용 함수
void Test()const{}
};
생성된 객체의 형식에 따라 함수 오버로딩이 동작한다
class Obj{
private:
const int iNum;
public:
void Render()const {cout << iNum << endl;} 읽기 전용 함수
void Test()const{}
void Test(){}
};
int main(){
const Obj O1; const 함수 호출
Obj O2; 일반 함수 호출
}
mutable 키워드를 사용하여 읽기 전용 함수 내부에서도 값을 쓸 수 있다
class Obj{
private:
mutable int iNum;
public:
void Render()const {
cout << iNum << endl;
iNum = 400; mutable 키워드가 붙은 멤버 변수의 값만 변경 가능
}
};