Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

friend
class
c++
keyword

What is the friend keyword in C++?

Educative Answers Team

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

svg viewer

friend is a keyword in C++ that is used to share the information of a class that was previously hidden. For example, the private members of a class are hidden from every other class and cannot be modified except through getters or setters. Similarly, the protected members are hidden from all classes other than its children classes.

Friend classes

Although information hiding is encouraged because it prevents unwanted bugs in a program, there are cases where two classes need to frequently interact with each other. In such a scenario, one of the classes declares another to be its friend. The class declaring the friendship can now make all of its data available to its friend.

Friend functions

A class may make its data available for one specific function by using the friend keyword. The function becomes a friend of that class.

Friendship is not bi-directional unless each class declares that the other is ​a friend.

Code

#include <iostream>
using namespace std;
class A{
private:
int x;
public:
A(){
cout << "New object created" << endl;
x = 0;
cout << "Value of x: " << x << endl;
}
// Class B can now access all of class A's data
// but Class A cannot access class B's data
friend class B;
};
class B{
private:
A var;
void dec(){
cout << "Value decreased!" << endl;
var.x--; // Modify private member of class A
cout << "Value of x: " << var.x << endl;
}
public:
void increase(){
cout << "Value increased!" << endl;
var.x++; // Modify private member of class A
cout << "Value of x: " << var.x << endl;
}
// decrease() method can now access class B's data
friend void decrease();
};
void decrease(){
cout << endl;
B temp;
// Access private function of class B:
temp.dec();
}
int main() {
// Use a friend class:
B obj;
obj.increase();
obj.increase();
// Use a friend function:
decrease();
return 0;
}

RELATED TAGS

friend
class
c++
keyword
Copyright ©2022 Educative, Inc. All rights reserved

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring