Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa Riêng tư và Được bảo vệ trong C ++


Trong bài đăng này, chúng ta sẽ hiểu sự khác biệt giữa các công cụ sửa đổi quyền truy cập riêng tư và được bảo vệ trong C ++.

Công cụ sửa đổi quyền truy cập riêng tư

  • Chúng được khai báo bằng từ khóa ‘private’, theo sau là ‘:’.

  • Không thể truy cập chúng bên ngoài lớp học.

  • Từ khóa 'private' là một công cụ sửa đổi quyền truy cập đảm bảo rằng các chức năng và thuộc tính bên trong lớp chỉ được truy cập bởi các thành viên lớp mà chúng đã được khai báo.

  • Chỉ các chức năng thành viên hoặc chức năng bạn bè mới được phép truy cập vào dữ liệu được gắn nhãn là "riêng tư".

Ví dụ

#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;
}

Đầu ra

/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

Công cụ sửa đổi quyền truy cập được bảo vệ

  • Công cụ sửa đổi quyền truy cập được bảo vệ tương tự như công cụ sửa đổi quyền truy cập riêng tư.

  • Chúng được khai báo bằng từ khóa ‘protected’, theo sau là ‘:’.

  • Không thể truy cập thành viên lớp được khai báo là 'Được bảo vệ' bên ngoài lớp.

  • Chúng có thể được truy cập trong lớp mà chúng được khai báo.

  • Chúng cũng có thể được truy cập bởi một lớp dẫn xuất có lớp cha chứa các thành viên 'được bảo vệ'.

  • Chúng được sử dụng khi làm việc với khái niệm kế thừa.

Ví dụ

#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;
}

Đầu ra

/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