C++ Lesson: Friend Functions

Introduction

Friend functions allow access to private and protected members of a class while not being a member function.

Syntax

#include <iostream> using namespace std; class MyClass { private: int data; public: MyClass(int val) : data(val) {} friend void displayData(MyClass obj); }; void displayData(MyClass obj) { cout << "Private Data: " << obj.data << endl; } int main() { MyClass obj(42); displayData(obj); return 0; }

Friend Function with Multiple Classes

#include <iostream> using namespace std; class ClassB; class ClassA { private: int numA; public: ClassA(int val) : numA(val) {} friend void add(ClassA, ClassB); }; class ClassB { private: int numB; public: ClassB(int val) : numB(val) {} friend void add(ClassA, ClassB); }; void add(ClassA objA, ClassB objB) { cout << "Sum: " << objA.numA + objB.numB << endl; } int main() { ClassA a(10); ClassB b(20); add(a, b); return 0; }

Advantages & Disadvantages