What is the use of friend function?

Answer Posted / the dj ak

by: The Dj Ak
www.thedjak.co.nr
www.the-dj-ak.webs.com
www.thedjak.webs.com


What is a Friend Function?

A friend function is a special function in c++ which inspite
of not being member fuction
of a class has privalage to access private and protected
data of a class.

A friend function is a non member function of a class, that
is declared as a friend using
the keyword "friend" inside the class. By declaring a
function as a friend, all the access
permissions are given to the function.

A friend function is used for accessing the non-public
members of a class.
A class can allow non-member functions and other classes to
access its own
private data, by making them friends. Thus, a friend
function is an ordinary
function or a member of another class.





Need for Friend Function:

As discussed in the earlier sections on access specifiers,
when a data
is declared as private inside a class, then it is not
accessible from outside
the class. A function that is not a member or an external
class will not
be able to access the private data. A programmer may have a
situation where
he or she would need to access private data from non-member
functions and
external classes. For handling such cases, the concept of
Friend functions
is a useful tool.





How to define and use Friend Function in C++:

The friend function is written as any other normal function,
except
the function declaration of these functions is preceded with
the keyword
friend. The friend function must have the class to which it
is declared as
friend passed to it in argument.






Some important points to note while using friend functions
in C++:

* The keyword friend is placed only in the function
declaration of the friend
function and not in the function definition.
.
* It is possible to declare a function as friend in any
number of classes.
.
* When a class is declared as a friend, the friend class
has access to the
private data of the class that made this a friend.
.
* A friend function, even though it is not a member
function, would have the
rights to access the private members of the class.
.
* It is possible to declare the friend function as
either private or public.
.
* The function can be invoked without the use of an
object. The friend function
has its argument as objects, seen in example below.






properties of friend function:

1. if a function to be made friend of a class than it should
be declared within body
of the class priciding with keyword friend.

2.freind function never breaks the security.

3.it should not be defined in name of class nor scope
resolution operator is used in it's
defination even the keyword freind is also not used while
defining friend function.

4.when friend function is called nither name of object nor
dot operator is used. however
it may accept the object as argument who's value it want's
to access.

5.it doen't matter in which section of the class we have
declared a freind function.







Example to understand the friend function:


#include
class exforsys
{
private:
int a,b;
public:
void test()
{
a=100;
b=200;
}
friend int compute(exforsys e1)

//Friend Function Declaration with keyword friend and
with the
object of class exforsys to which it is friend passed
to it
};

int compute(exforsys e1)
{
//Friend Function Definition which has access to private
data
return int(e1.a+e2.b)-5;
}

main()
{
exforsys e;
e.test();
cout<<"The result is:"<
//Calling of Friend Function with object as argument.
}

The output of the above program is

The result is:295

The function compute() is a non-member function of the class
exforsys. In order
to make this function have access to the
private data a and b of class exforsys , it is created as a
friend function
for the class exforsys. As a first step,
the function compute() is declared as friend in the class
exforsys as:

friend int compute (exforsys e1)







disadvantage of friend functions is that they require an
extra line
of code when you want dynamic binding. To get the effect of
a virtual friend,
the friend function should call a hidden (usually
protected:) virtual[20]
member function.






What is the use of friend function?
Answer
# 1

Sometimes a function is best shared among a number of
different classes. Such functions can be declared either as
member functions of one class or as global functions. In
either case they can be set to be friends of other classes,
by using a friend specifier in the class that is admitting
them. Such functions can use all attributes of the class
which names them as a friend, as if they were themselves
members of that class. A friend declaration is essentially a
prototype for a member function, but instead of requiring an
implementation with the name of that class
attached by the double colon syntax, a global function or
member function of another class provides the match.

Is This Answer Correct ?    22 Yes 8 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is serialization in php?

456


Is variable name casesensitive in php?

539


How can we destroy the cookie in php?

525


What is inheritance in php?

572


What is cookies php?

518






How can I learn php fast?

550


What kind of things have you done on the social side?

8576


How to find the index of an element in an array php?

519


What is uniqid php?

572


Explain what does the unset() function means?

569


Tell me what is htaccess?

485


How to update memcached when you make changes to php?

532


How to open a file for reading?

536


What language is php based on?

484


What is the purpose of php?

541