แนะนำ, 2024

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

ความแตกต่างระหว่างฟังก์ชั่นเพื่อนและเพื่อนในชั้นเรียน

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

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

ฟีเจอร์เพื่อนนี้ไม่ใช่ทั้งการ สับเปลี่ยน และไม่มี การถ่ายทอด X คือเพื่อนของ Y ไม่ได้อนุมานว่า Y ก็เป็นเพื่อนของ X ด้วยถ้า X เป็นเพื่อนของ Y และ Y เป็นเพื่อนของ Z ไม่ได้บอกเป็นนัยว่า X เป็นเพื่อนของ Z

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

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

ความหมายของฟังก์ชั่นเพื่อน

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

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

 # รวมถึงการใช้เนมสเปซ std; ชั้นแรก {ข้อมูล int; สาธารณะ: แรก (int i): data (i) {} การแสดงผลเป็นโมฆะเพื่อน (const first & a); }; การแสดงผลเป็นโมฆะ (กลุ่มแรก & a) {ศาล << "data =" < 

คำจำกัดความของ Friend Class

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

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

 # รวมถึงการใช้เนมสเปซ std; ชั้นเรียนแรก {// ประกาศเพื่อนชั้นเรียนเพื่อนชั้นสอง; สาธารณะ: First (): a (0) {} void print () {cout << "ผลลัพธ์ที่ได้คือ" << a << endl; } ส่วนตัว: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () // ผลลัพธ์ผลลัพธ์คือ 0 ผลลัพธ์คือ 5 

ความแตกต่างที่สำคัญระหว่างฟังก์ชั่นเพื่อนและเพื่อนในชั้นเรียน

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

ข้อสรุป

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

Top