A friend function allows a function to access the private and protected members of a class, even though it is not a member of that class.
🔹 Syntax
class ClassName {
private:
int data;
public:
ClassName(int val) : data(val) {}
// Friend function declaration
friend void friendFunction(ClassName obj);
};
1️⃣ Basic Friend Function Example
📌 A friend function accessing private members.
#include <iostream>
using namespace std;
class Sample {
private:
int num;
public:
Sample(int n) : num(n) {}
// Declaring a friend function
friend void showData(Sample obj);
};
// Friend function definition
void showData(Sample obj) {
cout << "Private data: " << obj.num << endl;
}
int main() {
Sample obj(10);
showData(obj);
return 0;
}
🔹 Output
Private data: 10
2️⃣ Addition using Friend Function
📌 Using a friend function to add two private numbers.
#include <iostream>
using namespace std;
class Numbers {
private:
int a, b;
public:
Numbers(int x, int y) : a(x), b(y) {}
// Friend function declaration
friend int add(Numbers obj);
};
// Friend function definition
int add(Numbers obj) {
return obj.a + obj.b;
}
int main() {
Numbers obj(5, 7);
cout << "Sum: " << add(obj);
return 0;
}
🔹 Output
Sum: 12
3️⃣ Character Integer using Friend Function
📌 A friend function accessing both character and integer data members.
#include <iostream>
using namespace std;
class Data {
private:
char ch;
int num;
public:
Data(char c, int n) : ch(c), num(n) {}
// Friend function declaration
friend void display(Data obj);
};
// Friend function definition
void display(Data obj) {
cout << "Character: " << obj.ch << endl;
cout << "Integer: " << obj.num << endl;
}
int main() {
Data obj('A', 100);
display(obj);
return 0;
}
🔹 Output
Character: A
Integer: 100
4️⃣ Find Distance using Friend Function
📌 Using a friend function to find the distance between two points.
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
int x, y;
public:
Point(int a, int b) : x(a), y(b) {}
// Friend function declaration
friend double distance(Point p1, Point p2);
};
// Friend function definition
double distance(Point p1, Point p2) {
return sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2));
}
int main() {
Point p1(3, 4), p2(7, 1);
cout << "Distance: " << distance(p1, p2);
return 0;
}
🔹 Output
Distance: 5
5️⃣ Length of Box using Friend Function
📌 A friend function accessing private data of a Box class.
#include <iostream>
using namespace std;
class Box {
private:
int length;
public:
Box(int l) : length(l) {}
// Friend function declaration
friend void printLength(Box obj);
};
// Friend function definition
void printLength(Box obj) {
cout << "Length of Box: " << obj.length << endl;
}
int main() {
Box b(20);
printLength(b);
return 0;
}
🔹 Output
Length of Box: 20
6️⃣ Private & Protected Example in C++
📌 Accessing both private
and protected
data using a friend function.
#include <iostream>
using namespace std;
class Sample {
private:
int privateNum;
protected:
int protectedNum;
public:
Sample(int p, int q) : privateNum(p), protectedNum(q) {}
// Friend function declaration
friend void display(Sample obj);
};
// Friend function definition
void display(Sample obj) {
cout << "Private Number: " << obj.privateNum << endl;
cout << "Protected Number: " << obj.protectedNum << endl;
}
int main() {
Sample obj(50, 100);
display(obj);
return 0;
}
🔹 Output
Private Number: 50
Protected Number: 100
📌 Summary
✔ A friend function can access private
and protected
members.
✔ Declared inside the class but defined outside.
✔ It is not a member of the class.
✔ It helps in operations involving multiple objects (like addition, distance calculation).
Let me know if you need more examples! 🚀🔥
0 Comments