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

C++의 액세스 수정자

<시간/>

액세스 수정자는 객체 지향 프로그래밍에서 데이터 은닉을 구현하는 데 사용됩니다. C++에는 세 가지 유형의 액세스 한정자가 사용됩니다. 이들은 공개, 비공개 및 보호됩니다. 이에 대한 자세한 내용은 다음과 같습니다.

공개 액세스 수정자

public으로 선언된 클래스의 데이터 멤버와 멤버 함수는 다른 클래스를 포함하여 모든 사람이 사용할 수 있습니다. 클래스 개체와 함께 점 연산자를 사용하여 프로그램의 모든 위치에서 액세스할 수 있습니다.

공개 액세스 지정자를 나타내는 프로그램은 다음과 같습니다.

예시

#include<iostream>
using namespace std;
class Add {
   public:
   int a, b;
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};
int main() {
   Add obj;
   obj.a = 2;
   obj.b = 5;
   obj.sum();
   return 0;
}

출력

Sum of 2 and 5 is 7

위의 프로그램에서 Add 클래스에는 두 개의 공개 데이터 멤버와 b가 있습니다. sum() 함수는 와 b의 합을 표시합니다. 이것은 아래에서 볼 수 있습니다.

class Add {
   public:
   int a, b;
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};

main() 함수에서 Add 클래스의 객체가 생성됩니다. 그런 다음 main()에서 및 b가 초기화됩니다. 이것은 공개 데이터 유형이기 때문에 수행할 수 있습니다. 마지막으로 와 b의 합을 표시하는 sum()이 호출됩니다. 이것은 아래에 나와 있습니다.

Add obj;
obj.a = 2;
obj.b = 5;

obj.sum();
추가

비공개 액세스 수정자

private으로 선언된 데이터 멤버는 클래스 내부의 함수에서만 액세스할 수 있으며 클래스 외부의 함수에서는 액세스할 수 없습니다. Friend 함수는 클래스의 개인 데이터 멤버에 액세스할 수도 있습니다.

private access modifier를 보여주는 프로그램은 다음과 같다.

예시

#include<iostream>
using namespace std;
class Add {
   private:
   int a, b;
   public:
   void setdata(int x, int y) {
      a = x;
      b = y;
   }
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};
int main() {
   Add obj;
   obj.setdata(9,5);
   obj.sum();
   return 0;
}

출력

Sum of 9 and 5 is 14

위의 프로그램에서 Add 클래스에는 두 개의 private 데이터 멤버와 b가 있습니다. setdata() 함수는 와 b의 값을 개인 변수로 제공합니다. sum() 함수는 와 b의 합을 표시합니다. 이것은 아래에서 볼 수 있습니다.

class Add {
   private:
   int a, b;
   public:
   void setdata(int x, int y) {
      a = x;
      b = y;
   }
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};

main() 함수에서 Add 클래스의 객체가 생성됩니다. 그런 다음 setdata() 함수가 호출되어 a와 b가 개인 변수이므로 초기화합니다. 마지막으로 와 b의 합을 표시하는 sum()이 호출됩니다. 이것은 아래에 나와 있습니다.

Add obj;
obj.setdata(9,5);
obj.sum();
추가

보호된 액세스 수정자

protected로 선언된 클래스의 데이터 멤버는 private로 선언된 멤버와 유사합니다. 클래스 외부에서 직접 액세스할 수 없지만 기본 클래스의 파생 클래스에서 액세스할 수 있습니다.

C++에서 보호된 접근 수정자를 보여주는 프로그램은 다음과 같습니다 -

예시

#include<iostream>
using namespace std;
class Parent {
   protected:
   int a, b;
};
class Child: public Parent {
   public:
   void getdata(int x, int y) {
      a=x;
      b=y;
   }
   void putdata() {
      cout<<"a = "<<a<<endl;
      cout<<"b = "<<b<<endl;
   }
};
int main() {
   Child obj;
   obj.getdata(9,1);
   obj.putdata();
   return 0;
}

출력

a = 9
b = 1

위의 프로그램에서 부모 클래스에는 두 개의 보호 변수와 b가 있습니다. 이것은 아래에 나와 있습니다.

class Parent {
   protected:
   int a, b;
};

Child 클래스에는 및 b의 값을 가져와 각각 표시하는 두 개의 함수 getdata() 및 putdata()가 있습니다. 이러한 함수는 b가 보호된 변수이고 Child가 Parent의 파생 클래스이므로 이 작업을 수행할 수 있습니다. 이에 대한 코드 스니펫은 다음과 같습니다. -

class Child: public Parent {
   public:
   void getdata(int x, int y) {
      a = x;
      b = y;
   }
   void putdata() {
      cout<<"a = "<<a<<endl;
      cout<<"b = "<<b<<endl;
   }
};

main() 함수에서 Child 클래스의 객체 obj가 생성됩니다. 그런 다음 getdata() 및 putdata() 함수가 호출됩니다. 이것은 아래에 나와 있습니다.

Child obj;
obj.getdata(9,1);
obj.putdata();