แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่าง Private และ Protected ใน C ++

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

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบเอกชนมีการป้องกัน
การสืบทอดคุณสมบัติไปยังคลาสที่ได้รับ
คลาสที่ได้รับมาไม่สามารถเข้าถึงสมาชิกส่วนตัวของคลาสพื้นฐานได้คลาสที่ได้รับสามารถเข้าถึงสมาชิกที่มีการป้องกันคลาสพื้นฐานได้
การเข้าถึง
สมาชิกส่วนตัวของคลาสไม่สามารถเข้าถึงได้จากขอบเขตของคลาสสมาชิกที่ได้รับการป้องกันของคลาสจะไม่สามารถเข้าถึงได้จากขอบเขตของคลาสยกเว้นคลาสที่ได้รับในทันที
สามารถเข้าถึงได้จากชั้นเรียนของตนเองใช่ใช่
สามารถเข้าถึงได้จากคลาสที่ได้รับไม่ใช่
สามารถเข้าถึงได้จากภายนอกไม่ไม่

คำจำกัดความของส่วนตัว

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

โปรแกรม C ++ แสดงแนวคิดของตัวระบุการเข้าถึงส่วนตัว

 # รวมถึงการใช้เนมสเปซ std; คลาส A {ส่วนตัว: int i; public: void get () {cout <> i; }}; คลาส B: สาธารณะ A {public: void show () {i ++; ศาล << "\ n หมายเลขที่คุณป้อนหลังจาก incrementcpp"> # รวมถึงการใช้ namespace std; เลี้ยงลูกด้วยนมชั้น {สาธารณะ: เป็นโมฆะเลี้ยงลูกด้วยนมวิธี (เป็นโมฆะ) {ศาล << "มันมาอยู่ภายใต้หมวดหมู่ของสัตว์เลี้ยงลูกด้วยนม" 

ในโปรแกรมที่กำหนดไว้ข้างต้นวัตถุหนึ่งชิ้นของคลาสเด็กนั้นถูกสร้างขึ้นด้วยชื่อ“ ob” และฟังก์ชันสมาชิกของคลาสพาเรนต์สามารถเข้าถึงได้ผ่านการเรียกเมธอดคลาสย่อย“ marine_mammalMethod” แม้ว่าวิธีการหลักจะไม่สามารถเข้าถึงได้โดยตรงกับวัตถุ“ ob”

คำจำกัดความของการป้องกัน

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

โปรแกรม C ++ ที่ระบุด้านล่างแสดงแนวคิดของตัวระบุการเข้าถึงที่ได้รับการป้องกัน

 # รวมถึงการใช้เนมสเปซ std; บัญชี class1 {ป้องกัน: int x, y; // เข้าถึงได้จากคลาสสาธารณะที่ได้รับ: ชุดโมฆะ (int a, int b) {x = a; Y = b; } void show () {cout < 

ในตัวอย่างข้างต้นคลาสเด็กสืบทอดคุณสมบัติของคลาสฐานเนื่องจากสมาชิกข้อมูลถูกประกาศเป็นสาธารณะหรือได้รับการป้องกัน มันจะเป็นไปไม่ได้ถ้า x และ y ถูกประกาศว่าเป็นไพรเวตในคลาสฐาน

ความแตกต่างที่สำคัญระหว่างส่วนตัวและได้รับการป้องกันใน C ++

  1. คีย์เวิร์ดที่มีการป้องกันสามารถใช้เพื่อสร้างสมาชิกคลาสที่เป็นส่วนตัวของคลาส แต่สามารถสืบทอดและใช้โดยคลาสที่ได้รับ ในทางกลับกันสิ่งนี้ไม่สามารถทำได้ในขณะที่ใช้งานส่วนตัวเนื่องจากสมาชิกส่วนตัวไม่สามารถสืบทอดโดยตรงไปยังคลาสที่ได้รับ
  2. เมื่อคลาสพื้นฐานได้รับการสืบทอดโดยใช้ตัวระบุการเข้าถึงส่วนตัวมันจะทำให้สมาชิกสาธารณะและสมาชิกที่ได้รับความคุ้มครองทั้งหมดของคลาสฐานสมาชิกส่วนตัวของคลาสที่ได้รับมา ในทางตรงกันข้ามนี่ไม่ใช่กรณีในตัวระบุการเข้าถึงที่ได้รับการป้องกัน

ข้อสรุป

ส่วนตัวและได้รับการป้องกันเป็นตัวระบุการเข้าถึงที่ใช้ในการตั้งค่าการมองเห็นของชั้นเรียนและสมาชิกของมันแตกต่างกัน อย่างไรก็ตามการป้องกันมีความยืดหยุ่นมากกว่าส่วนตัว

Top