접근 제어 지시자
제작자와 사용자를 구분하는 매우 중요한 문법이다.
제작자 스스로 자신이 만든 클래스의 특정 요소에 사용자가 접근할 수 없게 하려면 접근 제어 지시자를 활용해야 한다.
- 제작자가 얻는 이득: 사용자로 인한 값의 변화를 통제할 수 있다.
- public: 멤버에 관한 모든 외부 접근이 허용
- protected: 멤버에 관한 모든 외부 접근이 차단. 단, 상속 관계에 있는 파생 클래스에서의 접근은 허용
- private(default): 외부 접근 뿐만 아니라 파생클래스로부터의 접근까지 모두 차단. 클래스를 선언할 떄 별도로 접근 제어 지시자를 기술하지 않으면 private으로 간주.
private 멤버변수를 사용자 코드에서 접근할 수 없다.
//제작자 코드
class CTest
{
int m_nData; //기본 private
public:
void printData(){
cout << m_nData << endl; //멤버 함수에서는 private에 접근 가능하다.
}
};
//사용자 코드
int main(){
CTest t; //선언하면 생성자 함수가 호출된다.
t.m_nData = 10; //오류. 접근 불가능
cout << t.m_nData << endl; //접근 불가능? 요고도?
return 0;
}
생성자 함수도 접근제어지시자를 기술하지 않으면 private이 된다.
(객체의 생성의 제어할 목적으로 일부러 private으로 선언하는 경우도 있다.)
//제작자 코드
class CTest
{
//기본 접근제어지시자 private
CTest() {};
int m_nData;
public:
void printData(){
cout << m_nData << endl; //멤버 함수에서는 private에 접근 가능하다.
}
};
//사용자 코드
int main(){
CTest t; //생성자를 private으로 선언했기 때문에 접근할 수 없다. (오류)
return 0;
}
'◼️C++' 카테고리의 다른 글
[C++] 동적 객체의 생성과 소멸 (0) | 2023.09.17 |
---|---|
[C++] 생성자와 소멸자 (0) | 2023.09.17 |
[C++] 클래스 기본 문법 (0) | 2023.09.17 |
[C++] 객체지향 프로그래밍 개요 (0) | 2023.09.17 |
[C++] 식별자 검색 순서 (0) | 2023.09.07 |