What is friend function in c++

Friend functions in C++ provide a mechanism to grant special access privileges to functions outside the class scope. This article delves into the concept of friend functions, their syntax, usage, and the benefits they bring to C++ programming.

Friend Functions

In C++, a friend function is a non-member function that is granted access to the private and protected members of a class. It can be declared within the class, but it is not a member of the class itself. Friend functions are often used to manipulate or access private data of a class, enhancing flexibility and encapsulation.

Syntax and Declaration

To declare a friend function, the function prototype is placed inside the class declaration, usually preceded by the “friend” keyword. This declaration grants the function access to private and protected members of the class. The friend function definition, however, is placed outside the class.

Accessing Private and Protected Members

Friend functions have the privilege to access private and protected members of a class, just like member functions. This allows them to operate on class-specific data without the need for getter or setter functions. They can read, modify, or manipulate private data directly.

Friend Functions vs. Member Functions

While member functions are integral to class operations, friend functions offer distinct advantages:

  • Enhanced Flexibility: Friend functions can operate on multiple classes, even if they are unrelated, as long as they are declared as friends. This flexibility allows for cross-class interactions and simplifies code design.
  • Non-Intrusive Approach: Friend functions can access private members without being a part of the class itself. This non-intrusive nature allows external functions to collaborate with classes without compromising encapsulation.
  • Function Reusability: Friend functions can be reused across multiple classes, promoting code reusability and reducing duplication. They can perform common operations or provide utility functions that are applicable to various classes.

Guidelines and Best Practices

When using friend functions, it is essential to follow some guidelines:

  • Minimize Friend Functions: Limit the number of friend functions to maintain encapsulation and avoid excessive exposure of private members.
  • Use Selectively: Declare only the necessary functions as friends, avoiding granting unnecessary access to external functions.
  • Preserve Encapsulation: While friend functions can access private members, it is crucial to ensure they do not violate the encapsulation principles by modifying internal states recklessly.

Other Aspects of Friendship

Friendship in C++ can extend beyond functions to include friend classes, where an entire class is granted access to another class’s private and protected members. This further enhances flexibility and collaboration between classes.


Friend functions in C++ offer a unique way to grant external functions privileged access to private and protected members of a class. By understanding their syntax, usage, and benefits, programmers can utilize friend functions effectively to enhance flexibility, code reusability, and encapsulation in their C++ programs. Mastering the art of friendship in C++ unlocks new possibilities for building robust and extensible class hierarchies.