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.
Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.
- 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++
- Simulating final class in C++
- What happens when more restrictive access is given to a derived class method in C++?
- How to make a C++ class whose objects can only be dynamically allocated?
- Scanner Class in Java
Improved By : ajith211