ฟังก์ชันของเพื่อนใน 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++ ได้ดีขึ้น ตอนนี้เราจะมาดูสองวิธีที่เราใช้ฟังก์ชันเพื่อนได้

  1. การใช้ฟังก์ชันเพื่อนใน 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 หลัก ()

{

เอ เอ;

ขข;

  1. จอแสดงผล (ก);

กลับ 0;

}

เอาท์พุท:

ค่าของ p คือ:4

  1. การใช้งานฟังก์ชั่นระดับโลก

การใช้ฟังก์ชัน 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;

  1. ข้อมูลการตั้งค่า (9,2,3);

ศาล<<“s:”;

  1. แสดง ();

-s;

ศาล<<“-s:”;

  1. แสดง ();

กลับ 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++ คีย์เวิร์ดช่วยให้คลาสใดๆ เข้าถึงสมาชิกที่เป็นส่วนตัวและได้รับการปกป้องของคลาสและฟังก์ชันอื่นๆ