In this C++ tutorial, you will learn what is a Friend Function, how to declare a friend function, and how to access private and protected members from a friend function, with examples.
C++ Friend Function
C++ Friend Function can access private and protected members (variables and methods) of the classes in which it is declared as friend.
A global function, or a member function of another class can be declared as a friend function in this class.
Syntax
The syntax to declare a friend function in a class is
friend func_return_type function_name (function_parameters);
Examples
1. Global function as Friend function in Class A
In the following program, we define a class: A
, in which a function display()
is declared as a friend function. So, now display()
function can access the private and protected members of class A
type objects, in this case its the variable x
.
C++ Program
#include <iostream>
using namespace std;
class A;
void display(A& a);
class A {
private:
int x;
int y;
public:
A(int _x) {
x = _x;
}
friend void display(A& a);
};
void display(A& a) {
cout << "x : " << a.x << endl;
}
int main() {
A a = A(5);
display(a);
}
Output
x : 5
Program ended with exit code: 0
2. Member function of Class B as Friend function in Class A
In the following program, we define a class: A
, in which a function display()
of class B is declared as a friend function. So, now B::display()
function can access the private and protected members of class A
type objects.
C++ Program
#include <iostream>
using namespace std;
class A;
class B {
public:
void display(A&);
};
class A {
private:
int x;
int y;
public:
A(int _x) {
x = _x;
}
friend void B::display(A& a);
};
void B::display(A& a) {
cout << "x : " << a.x << endl;
}
int main() {
A a = A(5);
B b = B();
b.display(a);
}
Output
x : 5
Program ended with exit code: 0
Conclusion
In this C++ Tutorial, we learned what a Friend Function is, how it is used to access the private and protected members of other classes which declared this function as friend, with the help of examples.