액세스 수정자는 객체 지향 프로그래밍에서 데이터 은닉을 구현하는 데 사용됩니다. 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();