C++ 액세스 지정자
액세스 지정자
public
지금쯤이면 모든 클래스 예제에 나타나는 키워드 에 매우 익숙할 것 입니다.
예시
class MyClass { // The class
public: // Access specifier
// class members goes here
};
public
키워드는 액세스 지정자입니다.
액세스 지정자는 클래스의 멤버(속성 및 메서드)에 액세스할 수 있는 방법을 정의합니다. 위의 예에서 멤버는 public
- 즉 코드 외부에서 액세스하고 수정할 수 있음을 의미합니다.
그러나 회원들이 비공개로 외부 세계로부터 숨겨지기를 원한다면 어떻게 될까요?
C++에는 세 가지 액세스 지정자가 있습니다.
public
- 멤버는 클래스 외부에서 액세스할 수 있습니다.private
- 멤버는 클래스 외부에서 액세스(또는 조회)할 수 없습니다.protected
- 멤버는 클래스 외부에서 액세스할 수 없지만 상속된 클래스에서 액세스할 수 있습니다. 상속 에 대해서는 나중에 더 배우게 될 것 입니다.
public
다음 예에서는 및 private
멤버 간의 차이점을 보여줍니다 .
예시
class
MyClass {
public: // Public access
specifier
int x; // Public attribute
private: // Private access specifier
int y; // Private attribute
};
int main() {
MyClass
myObj;
myObj.x = 25; // Allowed (public)
myObj.y = 50; //
Not allowed (private)
return 0;
}
비공개 멤버에 액세스하려고 하면 오류가 발생합니다.
error: y is private
참고: 동일한 클래스 내에서 공개 메소드를 사용하여 클래스의 비공개 멤버에 액세스하는 것이 가능합니다. 이를 수행하는 방법에 대해서는 다음 장( 캡슐화 )을 참조하십시오.
팁: 클래스 속성을 비공개로 선언하는 것은 좋은 습관으로 간주됩니다(가능한 한 자주). 이렇게 하면 자신(또는 다른 사람)이 코드를 엉망으로 만들 가능성이 줄어듭니다. 이것은 또한 다음 장에서 자세히 배우게 될 캡슐화 개념의 주요 구성 요소입니다.
참고: 기본적으로 클래스의 모든 멤버는 private
액세스 지정자를 지정하지 않은 경우입니다.
예시
class
MyClass {
int x; // Private attribute
int y; // Private attribute
};