Clase amiga Una clase amiga puede acceder a miembros privados y protegidos de otra clase en la que está declarada como amiga. A veces es útil permitir que una clase en particular acceda a miembros privados de otra clase. Por ejemplo, se puede permitir que una clase LinkedList acceda a miembros privados de Node.
Una clase amiga puede acceder tanto a miembros privados como protegidos de la clase en la que ha sido declarada como amiga.
CPP
class Node { private: int key; Node* next; /* Other members of Node Class */ // Now class LinkedList can // access private members of Node friend class LinkedList; };
C++
// Example: #include<iostream> using namespace std; class A { int x; public: A() { x=10; } friend class B; //friend class }; class B { public: void display(A &t) { cout<<endl<<"The value of x="<<t.x; } }; main() { A _a; B _b; _b.display(_a); return 0; }
C++
// Example: Find the largest of two numbers using Friend Function #include<iostream> using namespace std; class Largest { int a,b,m; public: void set_data(); friend void find_max(Largest); }; void Largest::set_data() { cout<<"Enter the First No:"; cin>>a; cout<<"Enter the Second No:"; cin>>b; } void find_max(Largest t) { if(t.a>t.b) t.m=t.a; else t.m=t.b; cout<<"Maximum Number is\t"<<t.m; } main() { Largest l; l.set_data(); find_max(l); return 0; }
C++
// Prog: Demonstrates how friend functions work as a bridge between the classes #include<iostream> using namespace std; class ABC;// forward declaration class XYZ { int x; public: void set_data(int a) { x=a; } friend void max(XYZ,ABC); }; class ABC { int y; public: void set_data(int a) { y=a; } friend void max(XYZ,ABC); }; void max(XYZ t1,ABC t2) { if(t1.x>t2.y) cout<<t1.x; else cout<<t2.y; } main() { ABC _abc; XYZ _xyz; _xyz.set_data(20); _abc.set_data(35); max(_xyz,_abc); //callin friend function return 0; }
CPP
class Node { private: int key; Node* next; /* Other members of Node Class */ friend int LinkedList::search(); // Only search() of linkedList // can access internal members };
CPP
#include <iostream> class A { private: int a; public: A() { a = 0; } friend class B; // Friend Class }; class B { private: int b; public: void showA(A& x) { // Since B is friend of A, it can access // private members of A std::cout << "A::a=" << x.a; } }; int main() { A a; B b; b.showA(a); return 0; }
CPP
#include <iostream> class B; class A { public: void showB(B&); }; class B { private: int b; public: B() { b = 0; } friend void A::showB(B& x); // Friend function }; void A::showB(B& x) { // Since showB() is friend of B, it can // access private members of B std::cout << "B::b = " << x.b; } int main() { A a; B x; a.showB(x); return 0; }
CPP
#include <iostream> class A { int a; public: A() { a = 0; } // global friend function friend void showA(A&); }; void showA(A& x) { // Since showA() is a friend, it can access // private members of A std::cout << "A::a=" << x.a; } int main() { A a; showA(a); return 0; }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA