Table of Contents
In this article, you’ll learn about how to make a C++ program to demonstrate friend function and friend class with explanation.
What is friend function?
A friend function can access the private and protected data of a class. We declare a friend function using the friend keyword inside the body of the class.
What is friend class?
Friend Class is a class that can access both private and protected variables of the class in which it is declared as a friend, just like a friend function.
C++ program to demonstrate friend function and friend class
// Add members of two different classes using friend functions
#include <iostream>
using namespace std;
// forward declaration
class ClassB;
class ClassA {
public:
// constructor to initialize numA to 12
ClassA() : numA(12) {}
private:
int numA;
// friend function declaration
friend int add(ClassA, ClassB);
};
class ClassB {
public:
// constructor to initialize numB to 1
ClassB() : numB(1) {}
private:
int numB;
// friend function declaration
friend int add(ClassA, ClassB);
};
// access members of both classes
int add(ClassA objectA, ClassB objectB) {
return (objectA.numA + objectB.numB);
}
int main() {
ClassA objectA;
ClassB objectB;
cout << "Sum: " << add(objectA, objectB);
return 0;
}
The output of this program is
Sum: 13
In this program, ClassA
and ClassB
have declared add()
as a friend function. Thus, this function can access private data of both classes.
One thing to notice here is the friend function inside ClassA
is using the ClassB
. However, we haven’t defined ClassB
at this point.
// inside classA
friend int add(ClassA, ClassB);
For this to work, we need a forward declaration of ClassB
in our program.
// forward declaration
class ClassB;