We may not have the course you’re looking for. If you enquire or give us a call on + 1-866 272 8822 and speak to our training experts, we may still be able to help with your training requirements.
Training Outcomes Within Your Budget!
We ensure quality, budget-alignment, and timely delivery by our expert instructors.
In C++, classes are created to package data and functions, protecting internal information from external interference. However, there are situations in which it is essential to have access to private members to improve functionality. This is when the Friend Function is utilised in C++. A Friend Function in C++ offers a means to bypass conventional access restrictions, enabling external functions or other classes to directly access private and protected members.
Friend Functions are crucial for intricate operations as they improve the adaptability and interaction among classes due to their distinctive capability. Let's learn more about Friend Functions in C++ in depth to enhance your Programming skills. Are you ready to write more efficient and adaptable code in different scenarios?
Table of Contents
1) Syntax of Friend Function in C++
2) Types of Friend Functions in C++
3) Friend Class in C++
4) Example of a Friend Function in C++
5) Advantages of Using Friend Functions
6) Disadvantages of Using Friend Functions
7) Conclusion
Syntax of Friend Function in C++
In C++, a Friend Function's syntax begins with the ‘friend’ keyword within the class requiring access. It is stated as follows:
class ClassName { friend ReturnType FunctionName(Parameters); }; |
A friend function in C++ is defined outside the class, similar to a typical function. The friend keyword allows this function to access the private and protected members of the class. It’s important to note that a friend function is not considered a member of the class it operates on, and it can be invoked without creating an object of that class. Understanding this syntax is crucial for effectively utilising friend functions in your C++ code.
The structure of a friend function in C++ allows it to bypass the usual access restrictions of a class. Declaring a function as a friend grants it specific permission to access the class’s private and protected members.
This declaration is placed within the class but does not make the function a member of the class. Instead, it permits external functions or separate classes to access data that would otherwise be inaccessible. This mechanism is particularly useful when multiple classes need to work closely together, facilitating smooth communication and cooperation.
Types of Friend Functions in C++
Different types of Friend Functions in C++ offer unique ways for functions to access private class members, boosting flexibility and inter-class communication. Let’s discuss two main types:
1) Global Function as a Friend Function
A standalone function outside any class can access private members of a class by using Global Function as a Friend Function. This kind is useful for operations that involve various classes, allowing for data manipulation without restrictions from classes.
2) Member Function of Another Class as a Friend Function
Allowing a member function from a different class to access private members is achieved by declaring it as a friend function. This category promotes intimate connections among classes, improving adaptability and teamwork. It supports encapsulation while enabling targeted access, simplifying communication and ensuring seamless operation among interconnected classes in C++.
Transform your future with our C Programming Courses! Sign up today and learn the skills needed for a successful coding career.
Friend Class in C++
A Friend Class can reach the private and protected members of another class if declared as a friend. This is especially helpful when a certain class requires direct access to the private and protected members of other classes. In the case of a LinkedList class, it might require access to the private members of a Node class. In C++, to define a ‘Friend Class’, you can use the friend keyword followed by the class name.
friend class class_name; // declared in the base class |
This declaration enables seamless interaction between classes while keeping encapsulation when needed.
Example of a Friend Function in C++
Here's an example showcasing the use of a Friend Function in C++ to add the private values of two classes:
#include using namespace std; class ClassB; // Forward declaration of ClassB class ClassA { private: int valueA; public: ClassA() : valueA(5) { } // Constructor initialises valueA to 5 friend int addValues(ClassA, ClassB); // Friend function declaration }; class ClassB { private: int valueB; public: ClassB() : valueB(10) { } // Constructor initialises valueB to 10 friend int addValues(ClassA, ClassB); // Friend function declaration }; // Friend function definition that adds private members of ClassA and ClassB int addValues(ClassA a, ClassB b) { return a.valueA + b.valueB; } int main() { ClassA a; ClassB b; cout << "Sum of values: " << addValues(a, b) << endl; return 0; } |
Output:
Sum of values: 15 |
In this example, the ‘addValues()’ function is a friend to both 'ClassA' and 'ClassB', allowing it to go into their private members and perform the addition.
Transform Your Coding Skills with our C# Programming (C Sharp) Course today!
Advantages of Using Friend Functions
The Friend Function allows access to private data within classes, although it does come with certain drawbacks. Below are the main benefits of Friend Functions in C++:
a) Direct Access: Friend Functions can access private members even without inheriting the class
b) Bridge Classes: They act as a link between two groups by directly accessing their confidential information
c) Operator Flexibility: They improve the versatility of overloaded operators
d) Versatile Declaration: They may be defined within the public, private, or protected parts of a class
Crack the Programming Code and hone your C skills with our C Programming Course – Sign up today!
Disadvantages of Using Friend Functions
While Friend Functions facilitate unique access capabilities in C++, they also come with notable cons that impact class design and security. Let's discuss them here:
a) Data Breach: Friend Functions breach data hiding by gaining access to private members external to the class.
b) No Polymorphism: Their lack of support for run-time polymorphism restricts their dynamic behaviour.
Conclusion
We hope this blog has provided you with a thorough understanding of the Friend Function and how it enables informed decisions. It serves as a powerful tool that facilitates interaction between classes by granting way into private members without inheritance. By mastering this concept, you can enhance the flexibility and efficiency of your code.
Become a Coding Pro with our C++ Programming (C Plus Plus) Course – Register now!
Frequently Asked Questions
Friend Functions are required to access private members of a class without inheritance, boosting inter-class communication and flexibility.
Use Friend Functions when classes need direct access to each other's private data or for overburdening operators without inheritance.
Friend Functions are not inherently slower than member functions; their performance is similar, as per the implementation.
The Knowledge Academy takes global learning to new heights, offering over 30,000 online courses across 490+ locations in 220 countries. This expansive reach ensures accessibility and convenience for learners worldwide.
Alongside our diverse Online Course Catalogue, encompassing 19 major categories, we go the extra mile by providing a plethora of free educational Online Resources like News updates, Blogs, videos, webinars, and interview questions. Tailoring learning experiences further, professionals can maximise value with customisable Course Bundles of TKA.
The Knowledge Academy’s Knowledge Pass, a prepaid voucher, adds another layer of flexibility, allowing course bookings over a 12-month period. Join us on a journey where education knows no bounds.
The Knowledge Academy offers various C Programming Courses, including the C++ Programming (C Plus Plus) Course, C Programming Course, and C# Programming (C Sharp) Course. These courses cater to different skill levels, providing comprehensive insights into Operations Management.
Our Programming & DevOps Blogs cover a range of topics related to C++, offering valuable resources, best practices, and industry insights. Whether you are a beginner or looking to advance your Programming skills, The Knowledge Academy's diverse courses and informative blogs have got you covered.
Upcoming Programming & DevOps Resources Batches & Dates
Date
Thu 23rd Jan 2025
Thu 27th Mar 2025
Thu 15th May 2025
Thu 17th Jul 2025
Thu 25th Sep 2025
Thu 13th Nov 2025