캡슐화 정리
- information hiding : 편리한 사용과 보안
- encapsulation
- 객체에 관련된 정보(열거형, 구조체 , 그리고 클래스도)들을 클래스 안에 묶어 놓을 수 있음
- 변수는 숨기고 Gettert/Setter 함수를 제공
class Inventory
{
private:
int items[10];
public:
int GetItem(int index)
{
if ( index < 0 || index >= 10 )
{
return -1;
}
return items[index];
}
void SetItem(int index, int number)
{
if ( index < 0 || index >= 10 )
{
return;
}
if ( number < 0 )
{
return;
}
items[index] = number;
}
};
- 상수 멤버 변수
- 만들어 질 때 반드시 초기화
- 만들어진 후에는 값을 수정할 수 없음
- 상수 멤버 함수
- this를 바꿀 수 없음
- 인스턴스가 가지고 있는 모든 멤버변수를 변경불가능함
- Getter
class MyClass
{
public:
const int mValue{1};
int DoSomething() const
{
mValue = 2;
return 1;
}
};
class Calendar
{
private:
int mMonth;
public:
void SetMonth(int m)
{
mMonth = m;
}
int GetMonth() const
{
return mMonth;
}
};
Const의 활용
- const 변수
const int variables{20};
- const 매개변수
void Parameters(const int params);
- const 반환형 함수
const int& rvalues();
- const 멤버함수
void mFunctions()const;
- const를 가리키는 포인터
const int *p;(int인데 const한 변수를 가르키는 포인터)
- const 포인터
int *const cp;(const한 포인터)
- 함수 파라메터에서 const 변수 : 함수 안에서 변수를 변경하지 않겠다는 의미(참조 변수 & 사용시 사용)
- 멤버함수 에서 const : 멤버함수 내부에서 멤버 변수의 값을 수정하지 않음
- 함수 앞에 붙은 const : 함수의 리턴값을 상수화 반환 타입에 참조형이 사용될 때 반환값 변경 불가 사실 표현