ฟังก์ชันของเพื่อนใน C++ & Use Case พร้อมตัวอย่าง
เผยแพร่แล้ว: 2022-10-22การซ่อนข้อมูลเป็นเทคนิคการพัฒนาซอฟต์แวร์พื้นฐานที่ใช้กันอย่างแพร่หลายในภาษาโปรแกรมเชิงวัตถุ (OOP) จำกัดการเข้าถึงข้อมูลส่วนตัวของสมาชิกจากภายนอกชั้นเรียน อย่างไรก็ตาม คุณลักษณะ C++ ที่เรียกว่าฟังก์ชันเพื่อนขัดต่อหลักการซ่อนข้อมูล
ในบทความนี้ คุณจะได้เรียนรู้ ว่าฟังก์ชันเพื่อนใน C++ คืออะไร คลาสเพื่อนคืออะไร และสำรวจกรณีการใช้งานพร้อมตัวอย่าง
ดูหลักสูตรเทคโนโลยีฟรีของเราเพื่อให้เหนือกว่าคู่แข่ง
ฟังก์ชั่นเพื่อนใน C ++ คืออะไร?
ฟังก์ชันเพื่อนใน C ++ เป็นฟังก์ชันที่ประกาศภายนอกคลาส แต่มีสิทธิ์เข้าถึงสมาชิกส่วนตัวและได้รับการป้องกันของคลาส แม้ว่าสมาชิกไพรเวตของคลาสใดคลาสหนึ่งจะไม่สามารถเข้าถึงฟังก์ชันที่ไม่ใช่สมาชิกได้ แต่การประกาศให้เป็นฟังก์ชันเพื่อนทำให้พวกเขาสามารถเข้าถึงสมาชิกส่วนตัวและสมาชิกที่ได้รับการป้องกันของคลาสได้
ตรวจสอบการรับรองขั้นสูงของ upGrad ใน DevOps
ลักษณะของฟังก์ชันเพื่อน
ฟังก์ชันเพื่อนใน C++ มีลักษณะดังต่อไปนี้:
- ฟังก์ชั่นเพื่อนอยู่นอกขอบเขตของคลาสที่ได้รับการประกาศให้เป็นเพื่อน
- ฟังก์ชันเพื่อนอาจเป็นสมาชิกของคลาสหรือฟังก์ชันที่ประกาศนอกขอบเขตของคลาสก็ได้
- ฟังก์ชันของเพื่อนไม่ได้จำกัดอยู่แค่คลาสเดียว
สำรวจหลักสูตรวิศวกรรมซอฟต์แวร์ยอดนิยมของเรา
วิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์จาก LJMU & IIITB | โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ของ Caltech CTME |
Bootcamp การพัฒนาเต็มกอง | โปรแกรม PG ใน Blockchain |
โปรแกรม Executive PG ในการพัฒนาแบบ Full Stack | |
ดูหลักสูตรทั้งหมดของเราด้านล่าง | |
หลักสูตรวิศวกรรมซอฟต์แวร์ |
- การเรียกใช้ฟังก์ชันเพื่อนก็เหมือนการเรียกใช้ฟังก์ชันปกติของคลาสโดยไม่ต้องใช้วัตถุ
- เราไม่สามารถเรียกใช้ฟังก์ชันเพื่อนโดยใช้วัตถุได้เนื่องจากไม่อยู่ในขอบเขตของคลาส
- ฟังก์ชั่นเพื่อนใน C ++ มีวัตถุเป็นอาร์กิวเมนต์
- เราสามารถประกาศฟังก์ชั่นเพื่อนได้ทั้งในส่วนส่วนตัวหรือส่วนสาธารณะ
- ฟังก์ชันของเพื่อนไม่สามารถเข้าถึงชื่อสมาชิกได้โดยตรง และต้องใช้ตัวดำเนินการสมาชิก ดอท และชื่ออ็อบเจ็กต์ที่มีชื่อสมาชิก
ตรวจสอบการรับรองขั้นสูงของ upGrad ใน Cyber Security
ไวยากรณ์ของฟังก์ชันเพื่อน
เพื่อประกาศฟังก์ชันเพื่อน เราใช้คีย์เวิร์ด friend ภายในเนื้อหาของคลาส ไวยากรณ์ของฟังก์ชันเพื่อนคือ:
ชื่อคลาส {
… .. …
ชื่อฟังก์ชัน returnType ของเพื่อน (รายการหาเรื่อง);
… .. …
}
ทักษะการพัฒนาซอฟต์แวร์ตามความต้องการ
หลักสูตรจาวาสคริปต์ | หลักสูตร Core Java | หลักสูตร โครงสร้างข้อมูล |
หลักสูตร Node.js | หลักสูตร SQL | หลักสูตรการพัฒนาสแต็กเต็มรูปแบบ |
หลักสูตร NFT | หลักสูตร DevOps | หลักสูตรข้อมูลขนาดใหญ่ |
หลักสูตร React.js | หลักสูตรความปลอดภัยทางไซเบอร์ | หลักสูตรคอมพิวเตอร์คลาวด์ |
หลักสูตรการออกแบบฐานข้อมูล | หลักสูตร Python | หลักสูตร Cryptocurrency |
หากเราแยกย่อยไวยากรณ์ นี่คือความหมายของแต่ละคำ:
- friend คือคีย์เวิร์ดที่แสดงว่าฟังก์ชันคือฟังก์ชันเพื่อน
- returnType คือประเภทการส่งคืนของฟังก์ชัน
- functionName คือชื่อฟังก์ชันที่ผูกมิตรกับคลาส
- arg list เป็นอาร์กิวเมนต์ที่เราจะผ่าน
เรียนรู้หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม Executive PG โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ตัวอย่างฟังก์ชันเพื่อน C++
ตอนนี้ มาดูบางโปรแกรมเพื่อแสดงการทำงานของเพื่อนกัน
ตัวอย่างที่ 1: ฟังก์ชั่นเพื่อน C++ เพื่อพิมพ์ความสูงของกล่อง
#include <iostream>
ใช้เนมสเปซ std;
กล่องคลาส
{
ส่วนตัว:
ความสูงภายใน;
สาธารณะ:
กล่อง (): ความสูง (0) { }
เพื่อน int printHeight(Box); //ฟังก์ชั่นเพื่อน
};
int printHeight(กล่อง h)
{
h.ความสูง += 40;
กลับ h.height;
}
int หลัก ()
{
กล่อง h;
cout<<"ความสูงของกล่อง:"<< printHeight(h)<<endl;
กลับ 0;
}
อ่านบทความยอดนิยมของเราเกี่ยวกับการพัฒนาซอฟต์แวร์
วิธีการใช้ Data Abstraction ใน Java? | Inner Class ใน Java คืออะไร? | ตัวระบุ Java: คำจำกัดความ ไวยากรณ์ และตัวอย่าง |
ทำความเข้าใจการห่อหุ้มใน OOPS ด้วยตัวอย่าง | อาร์กิวเมนต์บรรทัดคำสั่งใน C อธิบาย | คุณสมบัติและลักษณะเด่น 10 อันดับแรกของคลาวด์คอมพิวติ้งในปี 2022 |
ความหลากหลายใน Java: แนวคิด ประเภท ลักษณะและตัวอย่าง | แพ็คเกจใน Java และวิธีใช้งาน | บทช่วยสอน Git สำหรับผู้เริ่มต้น: เรียนรู้ Git ตั้งแต่เริ่มต้น |
เอาท์พุท:
ความสูงของกล่อง:40
ตัวอย่างที่ 2: เมื่อฟังก์ชันเพื่อน C++ เป็นมิตรกับสองคลาส
#include <iostream>
ใช้เนมสเปซ std;
// ประกาศไปข้างหน้า
คลาส ClassQ;
คลาส คลาสP {
สาธารณะ:
// ตัวสร้างเพื่อเริ่มต้น numP ถึง 12
ClassP() : numP(12) {}
ส่วนตัว:
จำนวนเต็มP;
// ประกาศฟังก์ชั่นเพื่อน
เพิ่มเพื่อน int (ClassP, ClassQ);
};
คลาส ClassQ {
สาธารณะ:
// ตัวสร้างเพื่อเริ่มต้น numQ ถึง 1
ClassQ() : numQ(1) {}
ส่วนตัว:
int numQ;
// ประกาศฟังก์ชั่นเพื่อน
เพิ่มเพื่อน int (ClassP, ClassQ);
};
// เข้าถึงสมาชิกของทั้งสองคลาส
int เพิ่ม (ClassP objectP, ClassQ objectQ) {
ส่งคืน (objectP.numP + objectQ.numQ);
}
int หลัก () {
ClassP วัตถุP;
ClassQ objectQ;
cout << “ผลรวม: ” << เพิ่ม (objectP, objectQ);
กลับ 0;
}
เอาท์พุท:
ผลรวม:13
ในตัวอย่างข้างต้น Class P และ Class Q ได้ประกาศ add() เป็นฟังก์ชันเพื่อน ทำให้สามารถเข้าถึงข้อมูลส่วนตัวของทั้งสองคลาสได้ นอกจากนี้ ฟังก์ชันเพื่อนใน Class P ยังใช้ Class Q
ดังนั้นเราจึงทำการประกาศล่วงหน้าของ Class Q ในโปรแกรม
การใช้งานฟังก์ชั่นเพื่อน
เพื่อให้เข้าใจ ถึงฟังก์ชันเพื่อน ใน C++ ได้ดีขึ้น ตอนนี้เราจะมาดูสองวิธีที่เราใช้ฟังก์ชันเพื่อนได้
- การใช้ฟังก์ชันเพื่อนใน C ++ ผ่านวิธีการของคลาสอื่น
เราประกาศคลาสเพื่อนใน C++ เมื่อเราต้องการเข้าถึงสมาชิกส่วนตัวและได้รับการป้องกันของคลาสอื่นที่ได้รับการประกาศให้เป็นเพื่อน นอกจากนี้ยังสามารถประกาศฟังก์ชันสมาชิกคนเดียวของชั้นเรียนอื่นเป็นเพื่อนได้
คลาส class_name
{
คลาสเพื่อน friend_class;// ประกาศคลาสเพื่อน
};
class friend_class
{
};
ในการประกาศ class friend ด้านบน ฟังก์ชันทั้งหมดใน friend_class เป็นฟังก์ชัน friend ของ class_name
ต่อไปนี้คือตัวอย่างง่ายๆ ที่แสดงให้เห็นการใช้งานฟังก์ชันเพื่อนผ่านเมธอดของคลาสอื่น:
#include <iostream>
ใช้เนมสเปซ std;
คลาส A
{
int p=4;
เพื่อนคลาส B; //ชั้นเพื่อน
};
คลาส B
{
สาธารณะ:
การแสดงเป็นโมฆะ (A & a)
{
cout<<” ค่าของ p คือ:” <<ap;
}
};
int หลัก ()
{
เอ เอ;
ขข;
- จอแสดงผล (ก);
กลับ 0;
}
เอาท์พุท:
ค่าของ p คือ:4
- การใช้งานฟังก์ชั่นระดับโลก
การใช้ฟังก์ชัน global friend ทำให้เราเข้าถึงสมาชิกที่มีการป้องกันและเป็นส่วนตัวทั้งหมดของการประกาศคลาสระดับโลก นี่คือตัวอย่าง:
#include<iostream>
ใช้เนมสเปซ std;
พื้นที่ชั้น
{
int ก;
int ข;
int ค;
สาธารณะ:
เป็นโมฆะ setdata (int x, int y, int z);
การแสดงเป็นโมฆะ(เป็นโมฆะ);
ตัวดำเนินการโมฆะเพื่อน- (ช่องว่าง &s);
};
ช่องว่าง ::setdata (int x, int y, int z)
{
ก=x; b=y; c=z;
}
ช่องว่าง::แสดง(เป็นโมฆะ)
{
ศาล<<a<<" "<<b<<" "<<c<<"\n";
}
โมฆะโอเปอเรเตอร์- (ช่องว่าง &s)
{
สา =- สา;
sb =- sb;
sc =- sc;
}
int หลัก ()
{
ช่องว่าง s;
- ข้อมูลการตั้งค่า (9,2,3);
ศาล<<“s:”;
- แสดง ();
-s;
ศาล<<“-s:”;
- แสดง ();
กลับ 0;
}
เอาท์พุท:
ส: 9 2 3
-s: -9 -2 -3
ในโปรแกรมตัวอย่างข้างต้น โอเปอเรเตอร์ - คือฟังก์ชันเพื่อนที่เราประกาศทั่วโลกตามขอบเขตของคลาส
คลาสเพื่อนใน C ++ คืออะไร?
แม้ว่าจะเห็นได้ชัดเจนอยู่แล้ว แต่คลาสเพื่อนเป็นคลาสที่สามารถเข้าถึงทั้งสมาชิกส่วนตัวและสมาชิกที่ได้รับการคุ้มครองของชั้นเรียนซึ่งถูกประกาศว่าเป็นเพื่อน
พูดง่ายๆ คือ คลาสเพื่อนใน C++ จะใช้เมื่อเราต้องการให้คลาสเข้าถึงสมาชิกส่วนตัวและได้รับการคุ้มครองของคลาสอื่น
ฟังก์ชันสมาชิกของคลาสที่เราประกาศเป็นเพื่อนกับคลาสอื่นคือฟังก์ชันเพื่อนของคลาสเพื่อน ดังนั้นหน้าที่ของเพื่อนจะเชื่อมโยงทั้งสองคลาส
ไวยากรณ์ของคลาสเพื่อน
นี่คือไวยากรณ์ของคลาสเพื่อนใน C++:
คลาส R; //ประกาศไปข้างหน้า
คลาส P{
// ประกาศอื่นๆ
เพื่อนคลาส R;
};
คลาส R{
// ประกาศ
};
ในภาพประกอบข้างต้น Class R เป็นเพื่อนของ Class P ดังนั้น Class R สามารถเข้าถึงสมาชิกข้อมูลส่วนตัวของ Class P ได้ อย่างไรก็ตาม การย้อนกลับไม่เป็นความจริง และ Class P ไม่สามารถเข้าถึงสมาชิกข้อมูลส่วนตัวของ Class R .
นอกจากนี้ยังมีการประกาศไปข้างหน้าเพื่อแจ้งให้คอมไพเลอร์ทราบถึงการมีอยู่ของเอนทิตีก่อนที่จะมีการกำหนดอย่างเด็ดขาด ในที่นี้ เราประกาศ Class R โดยใช้การประกาศไปข้างหน้าเพื่อแจ้งให้คอมไพเลอร์ทราบถึงการมีอยู่ของมัน การประกาศไปข้างหน้าช่วยให้เราใช้วัตถุของ Class R ใน Class P
การใช้ฟังก์ชันเพื่อนใน C ++ คืออะไร?
สรุปการสนทนาของเรา ให้เราดูการใช้งานหลักสองประการของฟังก์ชันเพื่อนใน C ++:
- อันดับแรก เราใช้ฟังก์ชันเพื่อนเมื่อเราต้องการเข้าถึงสมาชิกส่วนตัวและสมาชิกที่ได้รับการคุ้มครองของชั้นเรียน ในการทำเช่นนี้ โดยทั่วไปเราจะกำหนดให้วัตถุของคลาสนั้นเข้าถึงสมาชิกส่วนตัวและสมาชิกที่ได้รับการคุ้มครอง อย่างไรก็ตาม ฟังก์ชันเพื่อนช่วยขจัดสถานการณ์ที่ฟังก์ชันจำเป็นต้องเป็นสมาชิกคลาสจึงจะเข้าถึงได้
- การใช้ฟังก์ชันเพื่อนใน C ++ อยู่ในตัวดำเนินการโอเวอร์โหลด ฟังก์ชันที่มีชื่อเหมือนกันแต่ตัวเลขและอาร์กิวเมนต์ต่างกันเรียกว่าฟังก์ชันโอเวอร์โหลด ฟังก์ชันเพื่อนใน C ++ พบการใช้งานในโอเปอเรเตอร์โอเวอร์โหลด
ในกรณีนี้ โอเปอเรเตอร์โอเวอร์โหลดฟังก์ชันนำหน้าคีย์เวิร์ดเพื่อนและประกาศขอบเขตคลาสฟังก์ชัน เมื่อโอเวอร์โหลดโดยฟังก์ชันเพื่อน ตัวดำเนินการไบนารีรับอาร์กิวเมนต์ที่ชัดเจนสองอาร์กิวเมนต์ ในขณะที่โอเปอเรเตอร์ unary รับอาร์กิวเมนต์เดียว มันทำงานในลักษณะเดียวกับฟังก์ชันตัวดำเนินการไบนารี ยกเว้นว่าการใช้งานฟังก์ชันตัวดำเนินการของเพื่อนเกิดขึ้นนอกขอบเขตของคลาส
นั่นนำเราไปสู่จุดสิ้นสุดของการสนทนาเกี่ยว กับฟังก์ชันเพื่อนใน C ++ และการใช้งาน หวังว่านี่จะช่วยให้คุณมีความรู้เพิ่มเติมเกี่ยวกับ C ++
นอกจากนี้ หากคุณต้องการเริ่มต้นอาชีพของคุณในฐานะนักพัฒนาแบบฟูลสแตก upGrad ขอเสนอหลักสูตร Executive Post Graduate Programme ออนไลน์อย่างเต็ม รูปแบบด้านการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญพิเศษด้านการพัฒนาแบบฟูลสแตกเป็นเวลา 13 เดือนร่วมกับ IIIT Bangalore
จุดเด่นของโปรแกรม:
- ประสบการณ์จริงกับกรณีศึกษาและการมอบหมายงานที่เกี่ยวข้องกับอุตสาหกรรม
- 450+ ชั่วโมงของการเรียนรู้ 360 องศา
- เครื่องมือการเขียนโปรแกรมและภาษาชั้นนำกว่า 10+ ภาษา
- 1:1 เซสชันการให้คำปรึกษาด้านอาชีพกับที่ปรึกษาในอุตสาหกรรม
- การสนับสนุนนักเรียนตลอด 24 ชั่วโมงทุกวัน
ลงทะเบียน วันนี้เพื่อรับสิทธิพิเศษ upGrad วันนี้!
ฟังก์ชั่นเพื่อนใน C ++ คืออะไร?
ฟังก์ชันเพื่อนใน C++ เป็นฟังก์ชันที่ไม่ใช่สมาชิกของคลาส แต่สามารถเข้าถึงสมาชิกส่วนตัวและสมาชิกที่มีการป้องกันได้
ประกาศฟังก์ชั่นเพื่อนยังไง?
ฟังก์ชันเพื่อนสามารถเข้าถึงข้อมูลส่วนตัวและข้อมูลที่ได้รับการป้องกันของชั้นเรียนได้ ในการประกาศฟังก์ชันเพื่อน เราใช้คีย์เวิร์ด friend ภายในเนื้อหาของคลาส
จะสร้างเพื่อนในชั้นเรียนใน C ++ ได้อย่างไร?
เราใช้คีย์เวิร์ด friend เพื่อประกาศคลาสเป็นคลาสเพื่อนใน C++ คีย์เวิร์ดช่วยให้คลาสใดๆ เข้าถึงสมาชิกที่เป็นส่วนตัวและได้รับการปกป้องของคลาสและฟังก์ชันอื่นๆ