Unlocking the Power of Object-Oriented Programming
Data Hiding: The Backbone of OOP
Data hiding is a fundamental concept in object-oriented programming (OOP) that restricts access to private members from outside the class. This means that private members can only be accessed within the class itself, while protected members can be accessed by derived classes but remain inaccessible from outside. But what happens when you need to access these private members from outside the class?
The Exception to the Rule: Friend Functions
That’s where friend functions come in – a feature in C++ that allows you to access private and protected data of a class from outside. By declaring a friend function using the friend
keyword inside the class body, you can grant access to private and protected data members. But how does it work?
A Closer Look at Friend Functions
Let’s take a look at an example. In this scenario, addFive()
is a friend function that can access both private and public data members. While this example gives us an idea about the concept of friend functions, it doesn’t showcase its full potential. A more meaningful use would be operating on objects of two different classes, where friend functions can be incredibly helpful.
Example 2: The Power of Friend Functions
In this program, ClassA
and ClassB
have declared add()
as a friend function. This allows the function to access private data of both classes. Notice that the friend function inside ClassA
uses ClassB
, even though ClassB
hasn’t been defined yet. To make this work, we need a forward declaration of ClassB
in our program.
Taking it to the Next Level: Friend Classes
But that’s not all. We can also use a friend class in C++ using the friend
keyword. When a class is declared a friend class, all its member functions become friend functions. Let’s see how it works.
Example 3: Unlocking the Potential of Friend Classes
In this example, ClassB
is a friend class of ClassA
. This means ClassB
has access to all members of ClassA
. Inside ClassB
, we’ve created a function add()
that returns the sum of numA
and numB
. Since ClassB
is a friend class, we can create objects of ClassA
inside ClassB
.
Understanding the Friend Relationship
It’s essential to note that the friend relationship in C++ is only granted, not taken. This means that ClassB
can access members of ClassA
, but ClassA
cannot access members of ClassB
.
By mastering friend functions and friend classes, you’ll unlock new possibilities in object-oriented programming and take your C++ skills to the next level.