เราทุกคนรู้ดีว่า สมาชิกส่วนตัว ในชั้นเรียนสามารถเข้าถึงได้โดยฟังก์ชันสมาชิกในชั้นเรียนเท่านั้น และไม่สามารถเข้าถึงได้ภายนอกชั้นเรียน สิ่งนี้สะท้อนถึงแนวคิด การห่อหุ้ม และ การปกปิด ของการออกแบบคลาสใน C++ ซึ่งเป็นข้อได้เปรียบขั้นพื้นฐานที่สุดของ C++
แต่หากบางครั้งเราต้องการเข้าถึงสมาชิกส่วนตัวนอกชั้นเรียนจริงๆ มันก็จะยุ่งยากมากขึ้น และเราจะตกอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออกเพราะไม่สามารถเข้าถึงหรือประกาศให้เป็นประเภทสาธารณะได้
การเกิดขึ้นของเพื่อนสามารถแก้ปัญหานี้ได้เป็นอย่างดี กล่าวคือ การประกาศฟังก์ชันภายนอกเป็น แบบเพื่อน และให้สิทธิ์เข้าถึงสมาชิกส่วนตัวภายในคลาสก็จะสามารถบรรลุผลดีทั้งสองโลกได้ นี่คือความหมายของมิตรภาพ นอกจากนี้ยังสามารถเห็นได้จากความหมายที่แท้จริง เช่นเดียวกับ "เพื่อน" ก็เปิดช่องสีเขียว
ออบเจ็กต์เพื่อนอาจเป็นฟังก์ชันทั่วไปหรือฟังก์ชันสมาชิกในคลาสอื่น ซึ่งเรียกว่า ฟังก์ชันเพื่อน ไม่เพียงเท่านั้น เพื่อนยังสามารถเป็นคลาสได้ ซึ่งเรียกว่า คลาสเพื่อน
หลังจากเข้าใจความหมายและหน้าที่ของเพื่อนแล้ว เรามาดูวิธีใช้งานในภาษา C++ กันดีกว่า สำหรับฟังก์ชันของเพื่อน คุณจะต้องประกาศฟังก์ชันภายในคลาสและเพิ่ม คีย์เวิร์ดของเพื่อน ไว้ข้างหน้าเท่านั้น ฟังก์ชั่นนี้มีสิทธิ์เฉพาะและกลายเป็นฟังก์ชั่นเพื่อน
สิ่งสุดท้ายที่ควรทราบคือเพื่อนไม่ได้อยู่ในคลาสนั้น ไม่ว่าจะเป็นฟังก์ชันของเพื่อนหรือคลาสของเพื่อนก็ตาม ไม่สามารถใช้พอยน์เตอร์นี้ภายในชั้นเรียน และไม่สามารถสืบทอดได้ เช่นเดียวกับเพื่อนของพ่อไม่จำเป็นต้องเป็นเพื่อนของลูกชาย
ต่อไปเราจะเขียนโปรแกรมหาระยะห่างระหว่างจุดสองจุด:
#include<iostream>#include<math.h>usingnamespacestd;classPoint{private:doublex;doubley;public:Point(doublea,doubleb){x=a;y=b;}intGetPoint(){cout<<(<< x<<,<<y<<);return0;}frienddoubleDistance(Point&a,Point&b);};//หาระยะห่างระหว่างจุดสองจุด doubleDistance(Point&a,Point&b){doublexx;doubleyy;xx=ax-bx;yy = ay-by;returnsqrt(xx*xx+yy*yy);}intmain(){PointA(2.0,3.0);PointB(1.0,2.0);doubledis;dis=Distance(A,B);cout<<dis < <endl;return0;}
คุณจะสังเกตเห็นว่าฟังก์ชันที่ใช้ระยะห่างระหว่างจุดสองจุดนั้นเป็นฟังก์ชันทั่วไปภายนอก เนื่องจากเราจำเป็นต้องเข้าถึงสมาชิกส่วนตัวในชั้นเรียน เราจึงประกาศให้เป็นประเภทเพื่อนทอดในชั้นเรียน ดูบรรทัดสุดท้ายในคลาส Point . ในขณะนี้ โค้ดคอมไพล์ได้โดยไม่มีปัญหา และเอาต์พุตปกติคือ:
คุณสามารถดูผลการทดสอบได้ คุณสามารถทดลองด้วยตัวเองบนคอมพิวเตอร์ พยายามอย่าประกาศว่าเป็นประเภทเพื่อนและสังเกตผลลัพธ์ที่ผิดพลาด