Friend Class A friend class can access private and protected members of other class in which it is declared as friend. It is sometimes useful to allow a particular class to access private members of other class. For example a LinkedList class may be allowed to access private members of Node.
Friend Function Like friend class, a friend function can be given special grant to access private and protected members. A friend function can be:
a) A method of another class
b) A global function
Following are some important points about friend functions and classes:
1) Friends should be used only for limited purpose. too many functions or external classes are declared as friends of a class with protected or private data, it lessens the value of encapsulation of separate classes in object-oriented programming.
2) Friendship is not mutual. If class A is a friend of B, then B doesn’t become a friend of A automatically.
3) Friendship is not inherited (See this for more details)
4) The concept of friends is not there in Java.
A simple and complete C++ program to demonstrate friend Class
A simple and complete C++ program to demonstrate friend function of another class
B::b = 0
A simple and complete C++ program to demonstrate global friend
A::a = 0
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Can we access private data members of a class without using a member or a friend function?
- C++ Program to swap two members using Friend Function
- Difference between Base class and Derived class in C++
- How to convert a class to another class type in C++?
- C++ interview questions on virtual function and abstract class
- C++ string class and its applications
- Object Oriented Programming in Python | Set 1 (Class, Object and Members)
- C++ String Class and its Applications | Set 2
- Difference between Abstract Class and Interface in Java
- Difference between namespace and class
- CBSE Class 11 | Mobile Operating Systems - Symbian, Andriod and iOS
- Why overriding both the global new operator and the class-specific operator is not ambiguous?
- Operator Overloading '<<' and '>>' operator in a linked list class
- What all is inherited from parent class in C++?
- Can a C++ class have an object of self type?
- Structure vs class in C++
- Hiding of all overloaded methods with same name in base class
- Why is the size of an empty class not zero in C++?
- Simulating final class in C++
- What happens when more restrictive access is given to a derived class method in C++?
Improved By : ajith211