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

C++에서 비공개와 보호의 차이점 - 2020 - 다른 사람


이 게시물에서는 C++에서 private 및 protected 액세스 수정자의 차이점을 이해할 것입니다.

비공개 액세스 수정자

  • 'private' 키워드를 사용하여 선언하고 ':'를 붙입니다.

  • 수업 외부에서는 액세스할 수 없습니다.

  • 'private' 키워드는 클래스 내부의 함수와 속성이 선언된 클래스 멤버만 액세스할 수 있도록 하는 액세스 수정자입니다.

  • 멤버 함수 또는 친구 함수만 '비공개'로 표시된 데이터에 액세스할 수 있습니다.

예시

#include <iostream>
using namespace std;
class base_class{
   private:
   string my_name;
   int my_age;
   public:
   void getName(){
      cout << "Enter the name... ";
      cin >> my_name;
      cout << "Enter the age... ";
      cin >> my_age;
   }
   void printIt(){
      cout << "The name is : " << my_name << endl;
      cout << "The age is: " << my_age << endl;
   }
};
int main(){
   cout<<"An object of class is created"<< endl;
   base_class my_instance;
   my_instance.getName();
   my_instance.printIt();
   return 0;
}

출력

/tmp/u5NtWSnX5A.o
An object of class is created
Enter the name... Jane
Enter the age... 34
The name is : Jane
The age is: 34

보호된 액세스 수정자

  • Protected access modifier는 private access modifier와 유사합니다.

  • 'protected' 키워드 뒤에 ':'를 사용하여 선언합니다.

  • '보호됨'으로 선언된 클래스 멤버는 클래스 외부에서 액세스할 수 없습니다.

  • 선언된 클래스 내에서 액세스할 수 있습니다.

  • 부모 클래스에 '보호된' 멤버가 포함된 파생 클래스에서도 액세스할 수 있습니다.

  • 상속 개념으로 작업할 때 사용됩니다.

예시

#include <iostream>
using namespace std;
class base_class{
   private:
   string my_name;
   int my_age;
   protected:
   int my_salary;
   public:
   void getName(){
      cout << "Enter the name... ";
      cin >> my_name;
      cout << "Enter the age... ";
      cin >> my_age;
   }
   void printIt(){
      cout << "The name is : " << my_name << endl;
      cout << "The age is: " << my_age << endl;
   }
};
class derived_class : public base_class{
   private:
   string my_city;
   public:
   void set_salary(int val){
      my_salary = val;
   }
   void get_data_1(){
      getName();
      cout << "Enter the city... ";
      cin >> my_city;
   }
   void print_it_1(){
      cout << "The salary is: " << my_salary << endl;
      printIt();
      cout << "The city is: " << my_city << endl;
   }
};
int main(){
   cout<<"Instance of derived class is being created.."<<endl;
   derived_class my_instance_2 ;
   my_instance_2.set_salary(100);
   my_instance_2.get_data_1();
   my_instance_2.print_it_1();
   return 0;
}

출력

/tmp/u5NtWSnX5A.o
Instance of derived class is being created..
Enter the name... Jane
Enter the age... 23
Enter the city... NewYork
The salary is: 100
The name is : Jane
The age is: 23
The city is: NewYork