#Previous question #Index of C++ Questions #Next question

The concept of encapsulation and data hiding indicate that nonmember functions should not be able to access an objectís private and protected data. The policy is if you are not a member, you canít get it. But there is a certain situation wherein you need to share your private or protected data with nonmembers. ĎFriendsí come here as a rescue.

A friend function is a non-member function that grants access to classís private and protected members.

Pointers for friend functions:

  • A friend function may be declared friend of more than one class.
  • It does not have the class scope as it depends on functionís original definition and declaration.
  • It does not require an object (of the class that declares it a friend) for invoking it. It can be invoked like a normal function.
  • Since it is not a member function, it cannot access the members of the class directly and has to use an object name and membership operator (.) with each member name.
  • It can be declared anywhere in the class without affecting its meaning.
  • A member function of the class operates upon the members of the object used to invoke it, while a friend function operates upon the object passed to it as argument.

You have viewed 1 page out of 62. Your C++ learning is 0.00% complete. Login to check your learning progress.

 Vote 0

Similar topics related to this section

object-oriented, C vs C++, C++ vs Java, encapsulation, constructor, overloaded constructor, destructor, destructor overloaded, copy constructor, copy constructor, deep copy, deep copy vs shallow copy, singleton, default access modifier, default access modifier, default access modifier, abstraction, THIS pointer, static function, THIS pointer, a static function, scope resolution operator, inline function, private vs protected, const function, polymorphism, operator overloading, function overloading, overriding, prefix vs postfix, friend class, friend function, sizeof class with virtual, vfptr and vftable, vfptr and vftable using C, early binding and late binding, inheritance, virtual function call from a constructor/destructor, virtual destructor, virtual base class, virtual base class, exception, stack unwinding, exception handling, try-catch block, namespace, mutable variable and const function, mutable keyword, explicit, access a member function, object slicing, ctor sequence of constructor, dtor sequence of destructor, virtual destructor, print the type, dynamic casting, static casting, dynamic and static casting, const casting, reinterpret casting, static and reinterpret casting, template class, template vs macro,

#Object-Oriented Programming in C++ (4th Edition)
#Programming: Principles and Practice Using C++ (2nd Edition)
#The C++ Programming Language, 4th Edition
#Professional C++ Paperback by Nicholas A.Solter, Scott J.Kleper
#Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14