Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 비공개 및 보호 멤버


C++의 클래스에는 해당 클래스 멤버를 포함하는 공개, 비공개 및 보호 섹션이 있습니다.

private 데이터 멤버는 클래스 외부에서 액세스할 수 없습니다. 클래스 또는 친구 함수로만 액세스할 수 있습니다. 모든 클래스 구성원은 기본적으로 비공개입니다.

클래스의 보호된 멤버는 private 멤버와 비슷하지만 파생 클래스나 자식 클래스에서 액세스할 수 있지만 private 멤버는 액세스할 수 없습니다.

클래스의 private 및 protected 멤버를 보여주는 프로그램은 다음과 같습니다. -

예시

#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 << "The value of a : " << a;
      cout << "\nThe value of b : " << b;
   }
};
int main() {
   Derived obj;
   obj.func();
   return 0;
}

출력

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

The value of a : 8
The value of b : 10

이제 위의 프로그램을 이해해보자.

Base 클래스에서 데이터 멤버는 각각 public, protected 및 private인, b 및 c입니다. 이에 대한 코드 스니펫은 다음과 같습니다.

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

Derived 클래스는 Base 클래스를 상속합니다. func() 함수는 및 b의 값을 인쇄합니다. c 값은 Base 클래스에 비공개이고 Derived 클래스에서 액세스할 수 없으므로 인쇄할 수 없습니다. 이에 대한 코드 스니펫은 다음과 같습니다.

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

main() 함수에서 Derived 클래스의 객체 obj가 생성됩니다. 그런 다음 func() 함수가 호출됩니다. 이에 대한 코드 스니펫은 다음과 같습니다.

int main() {
   Derived obj;
   obj.func();
   return 0;
}