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
};