--%>

Friend function in C++

Q. What is friend function in C++? What are the risks associated with the use of friend function?

Ans.

As we know that the private members of the class cannot be assessed from outside the class, a non member function cannot have access to the private data of that class. Though there could be a condition where we would like two classes to distribute a particular function.

 

For instance:

Consider a case where two classes' manager and employee have defined. We could like to use a function to operate on the both objects of both classes. In such situation C++ allows the common function to be made friendly with both the classes, thereby allowing the function to be access to the private data of these classes. Such members need not be members of these classes. A member function of one class can be friend function of another class in such a case. They are defining using the case scope resolution operator.

Syntax: Friend return _ type class name : : function name (args) we can also declare all the members functions of one classes as the friend function of another class, in such class the class is called a friend class.

Syntax: Friend class name: A friend function has certain special characteristics:

1.      It is not in scope of the class, it cannot be called by the object of that class.

2.      As it is not in the scope of the class, it cannot be called with the object of that class.

3.      It can be invoked as a normal function without the help of some object.

4.      Unlike member functions, it cannot be access the member names directly and has to be used an object name and dot membership operator with each member name.

5.      It can be stated either in the public or private part of a class without disturbing its sense.

6.      Usually it has the objects as the arguments.

Example

Class X, Y, Z;

Int n;

Public :

 Void value (Int s)

{

 Int x;

X = s;

}

Friend void max (X, Y, Z; ABC);

};

Class ABC

{

Int a;

Public :

Void value (Int s)

{

a = s;

}

Friend void max (XYZ, ABC);

};

Void max (XYZ m, ABC n)

{

If (m. X. > = n. a)

 Cout << m. x.;

else

cout << n. a.;

  }

Int main ();

{

A, B, C a, b, c;

A, b, c value (1);

X, Y, Z x, y, z;

 X, y, z; value (20);

}

Max (X, Y, Z; a, b, c);

Return 0;

   Related Questions in Programming Languages

  • Q : Define Double buffering Double

    Double buffering: A graphics method employed to smooth animation. The later version of an image is drawn `at the back the scenes' and then exhibited in its totality whenever the drawing is finished. The supposition is that it will be relatively fast t

  • Q : Define Iteration Iteration : The

    Iteration: The repetition of a set of statements, generally employing a looping control structure, like a while loop, for loop and do loop.

  • Q : What is Client Client : It is a user of

    Client: It is a user of a service. The Web client requests resources from Web server, for example: Whenever the client is an object then this is the sender of messages to its object servers.

  • Q : Security features in the UNIX State the

    State the various security features within the UNIX?

  • Q : Explain the term QTP Environment

    Explain the term QTP Environment?

  • Q : Define Peer Peer : It is a term

    Peer: It is a term employed of the Abstract Windowing Toolkit (AWT) to refer to the underlying classes which give the platform-specific implementation of the component classes.

  • Q : What is no-arg constructor no-arg

    no-arg constructor: It is a constructor which takes no arguments. By default, each and every class without an explicit constructor has a default no-arg constructor with the public access. Its role is entirely to invoke the no-arg constructor of the in

  • Q : What is Leverage Model-Based Design

    Leverage Model-Based Design: Model-based design provides useful hints of how a large system can be reduced so that its state space becomes searchable. If not inherently visible in the design (for example, by means of using a “State” design

  • Q : Define Static nested class Static

    Static nested class: It is a nested class with static reserved word in its header. Dissimilar inner classes, objects of static nested classes contain no enclosing object. They are as well termed as nested top-level classes.

  • Q : Questions on java class Array 1.

    1. Suppose we have a class A which has a constructor that takes a single integer. (a) After the following statements have been executed, how many A objects will exist