반응형
Class 안에 있는 private과 public 차이
C++에서 private와 public은 클래스 멤버들의 접근 제어를 지정하는 키워드이다. 이 두 접근 제어 지시자는 클래스 내부의 멤버 변수와 멤버 함수가 외부에서 어떻게 접근 가능한지를 결정한다.
- private:
- private으로 지정된 멤버 변수나 멤버 함수는 클래스 내부에서만 접근 가능합니다. 즉, 클래스 내부의 다른 멤버 함수에서는 접근할 수 있지만 클래스 외부에서는 접근할 수 없다.
- private으로 선언된 멤버들은 클래스의 구현 내부에 있으므로 외부에서 직접 접근하거나 수정할 수 없다. 이는 정보 은닉(information hiding)의 개념과 관련이 있어서 클래스의 내부 상세 구현을 숨기고 오직 공개된 인터페이스를 통해 상호작용하도록 하는데 사용된다.
- public:
- public으로 지정된 멤버 변수나 멤버 함수는 클래스 외부에서도 자유롭게 접근할 수 있다. 클래스 객체를 생성하고, 객체의 멤버 변수나 멤버 함수를 호출할 때 사용된다.
- public 멤버들은 클래스의 공개 인터페이스를 형성하며, 외부 코드와의 상호작용을 허용한다.
예를 들어, 아래의 코드는 private와 public을 사용한 간단한 클래스:
class MyClass {
private:
int privateVar; // private 멤버 변수
public:
int publicVar; // public 멤버 변수
void setPrivateVar(int value) {
privateVar = value; // private 멤버 변수에 접근 가능
}
int getPrivateVar() {
return privateVar; // private 멤버 변수에 접근 가능
}
};
int main() {
MyClass obj;
obj.setPrivateVar(42); // public 함수를 통해 private 멤버 변수에 접근
obj.publicVar = 10; // public 멤버 변수에 직접 접근
int privateValue = obj.getPrivateVar(); // public 함수를 통해 private 멤버 변수에 접근
return 0;
}
접근 못하는 예제
private으로 선언된 멤버 변수인 privateVar에 클래스 외부에서 직접 접근하는 시도는 컴파일 오류를 발생시키므로 실제로 컴파일되지 않는다.
privateVar에 접근할 수 없는 코드 예제:
class MyClass {
private:
int privateVar; // private 멤버 변수
public:
int publicVar; // public 멤버 변수
void setPrivateVar(int value) {
privateVar = value; // private 멤버 변수에 접근 가능
}
int getPrivateVar() {
return privateVar; // private 멤버 변수에 접근 가능
}
};
int main() {
MyClass obj;
obj.privateVar = 10; // 컴파일 오류: private 멤버 변수에 직접 접근할 수 없음
return 0;
}
위 코드에서 obj.privateVar = 10;라는 부분에서 컴파일 오류가 발생한다. 이 부분은 privateVar가 private으로 선언되어 클래스 외부에서 직접 접근할 수 없기 때문에 컴파일러에서 오류를 감지하고 발생시킨다.
반응형
'C++ > C++ 클래스, 생성자 초기화 리스트' 카테고리의 다른 글
생성자 초기화 리스트 (0) | 2023.12.01 |
---|---|
this (2) | 2023.11.30 |
생성자, 소멸자 (2) | 2023.11.30 |
클래스 (2) | 2023.11.30 |