Clase Friend y función en C++

 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *