English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C ++중에서 비공개 멤버와 보호 멤버

C ++의 클래스는 공개적, 비공개적, 보호적 섹션을 가지고 있으며, 각각 해당 클래스 멤버를 포함하고 있습니다.

비공개 데이터 멤버는 클래스 외에서 접근할 수 없습니다. 클래스나 친구 함수를 통해 접근할 수 있습니다. 기본적으로 모든 클래스 멤버는 비공개입니다.

클래스 내의 보호 멤버는 비공개 멤버와 유사하지만, 추출 클래스나 자식 클래스에서 접근할 수 있으며, 비공개 멤버는 접근할 수 없습니다.

클래스 내의 비공개 멤버와 보호 멤버를 보여주는 프로그램은 다음과 같습니다:

예제

#include <iostream>
using namespace std;
class Base {
   public :
   int a = 8;
   protected :
   int b = 10;
   private :
   int c = 20;
};
class Derived : public Base {
   public :
   void func() {
      cout << "value of a: " << a;
      cout << "\nvalue of b: " << b;
   }
};
int main() {
   추출된 obj;
   obj.func();
   return 0;
}

출력 결과

위 프로그램의 출력은 다음과 같습니다.

a의 값 8
b의 값 10

이제 이 프로그램을 이해해 보겠습니다.

Base 클래스에서 데이터 멤버는 a, b, c로 각각 공개적, 보호적, 비공개적입니다. 주어진 코드 단편은 다음과 같습니다.

class Base {
   public :
   int a = 8;
   protected :
   int b = 10;
   private :
   int c = 20;
};

추출 클래스가 기본 클래스를 상속합니다. 이 함수func()a와 b의 값을 출력합니다. c의 값을 출력할 수 없습니다. 왜냐하면 c의 값은 Base 클래스 전용이며 Derived 클래스에서 접근할 수 없기 때문입니다. 주어진 코드 단편은 다음과 같습니다.

class Derived : public Base {
   public :
   void func() {
      cout << "value of a: " << a;
      cout << "\nvalue of b: " << b;
   }
};

이 함수에서main()Derived 클래스의 객체 obj를 생성한 후func()이 함수를 호출합니다. 주어진 코드 단편은 다음과 같습니다.

int main() {
   추출된 obj;
   obj.func();
   return 0;
}
Redis 가이드