Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่างส่วนตัวและการป้องกันใน C ++


ในโพสต์นี้ เราจะเข้าใจความแตกต่างระหว่างตัวแก้ไขการเข้าถึงแบบส่วนตัวและแบบมีการป้องกันใน C++

ตัวแก้ไขการเข้าถึงส่วนตัว

  • ประกาศโดยใช้คีย์เวิร์ด "ส่วนตัว" ตามด้วย ":"

  • ไม่สามารถเข้าถึงได้นอกชั้นเรียน

  • คีย์เวิร์ด "ส่วนตัว" คือตัวแก้ไขการเข้าใช้ที่ทำให้แน่ใจว่าฟังก์ชันและคุณลักษณะภายในคลาสจะเข้าถึงได้โดยสมาชิกของคลาสที่ได้รับการประกาศเท่านั้น

  • เฉพาะฟังก์ชันของสมาชิกหรือฟังก์ชันของเพื่อนเท่านั้นที่ได้รับอนุญาตให้เข้าถึงข้อมูลที่ระบุว่าเป็น "ส่วนตัว"

ตัวอย่าง

#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' ตามด้วย ':'

  • สมาชิกชั้นเรียนที่ได้รับการประกาศว่า "ได้รับการคุ้มครอง" จะเข้าถึงภายนอกชั้นเรียนไม่ได้

  • สามารถเข้าถึงได้ภายในชั้นเรียนที่มีการประกาศ

  • นอกจากนี้ยังสามารถเข้าถึงได้โดยคลาสที่ได้รับซึ่งคลาสพาเรนต์ประกอบด้วยสมาชิก 'ที่ได้รับการป้องกัน'

  • ใช้ในขณะที่ทำงานกับแนวคิดการสืบทอด

ตัวอย่าง

#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