C++/공부내용
C++ Classes - Access Specifiers
HappyFrog
2022. 6. 29. 18:03
접근 지정자
지금까지 우리는 우리의 클래스 예시들로부터 public 키워드가 꽤나 친근해졌습니다:
예시
class MyClass { // 클래스
public: // 접근 지정자
// 클래스 멤버들은 이곳에 작성됩니다
};
public 키워드는 접근 지정자입니다. 접근 지정자는 클래스의 멤버들에 어떻게 접근할 수 있는지를 정의해줍니다. 위 예시에서 멤버들은 public 입니다. - 코드의 바깥에서도 접근하여 수정이 가능하다는 뜻입니다.
하지만 우리가 멤버들을 외부로부터 숨기고 격리시키고 싶다면 어떡할까요?
C++에서는 세 가지의 접근 지정자가 있습니다:
- public - 클래스 외부에서 멤버에 접근 가능합니다.
- private - 클래스 외부에서 멤버에 접근하거나 볼 수 없습니다.
- protected - 클래스 외부에서 멤버에 접근할 수 없지만, 상속된 클래스에서는 접근 가능합니다.
아래 예시에서 우리는 public 과 private 멤버의 차이점에 대해 다룰 것입니다:
예시
#include <iostream>
using namespace std;
class MyClass {
public:
int x;
private:
int y;
};
int main() {
MyClass myObj;
myObj.x = 25; // 적용 가능 / public
myObj.y = 50; // 접근 불가 / private (에러)
return 0;
}
주의: 같은 클래스 안의 public 메서드를 통해 클래스의 private 멤버에 접근할 수 있습니다.
팁: 클래스의 멤버를 가능한 자주 private으로 선언하는 것은 좋은 연습이 될 것입니다. 이것은 당신의 코드가 꼬일 가능성을 줄여줍니다.
참고: 기본적으로, 접근 지정자를 특정하지 않은 클래스의 모든 멤버는 private 입니다:
예시
#include <iostream>
using namespace std;
class MyClass {
int x;
int y;
};
int main() {
MyClass myObj;
myObj.x = 25; // 접근 불가 / private (에러)
myObj.y = 50; // 접근 불가 / private (에러)
return 0;
}