Friendly function and rules of friend function, C/C++ Programming

Assignment Help:

Friendly Function:

A class can have public members and private members.   The public member can be

used through the class using dot operator.   Where as private member cannot be accessed outside the class.  In other word a private member can be accessed only by the members of its class.   In some situation it may be essential to share a function between or among classes in such case the member function is declared as friendly member function in the class.

Note: The  private  data  member can be used outside  the  class only  through  friend function with object class as argument.

Program to read private member from a member function:

class sample

{

 int a;

 

int b;

public:

void setdata( )

{a=10;

b=20;

}

friend int putdata(sample s);

};

int putdata(sample s)

{ return (s.a+s.b);

}

int main( )

{sample x;

x.setdata( );

cout<<"Sum is:"<

return 0;

}

Rules of friend function:

  • It defined without accessing the scope of the class.
  • It can work similar global function when the argument is not a class.
  • It cannot use the member directly private or public.
  • The private member can be changed or accessed only through its object argument.
  • It can be defined as inline function outside the class only not in prototype.
  • It can be a public or private function without any effect of its meaning.
  • It usually has class as its arguments only then it can be used among defined class arguments.

The member function of one class can be accessed as friend function of another class.  We can also make a class as friend of another class.  When class is defined as friend class all the member-functions from the friend class can be accessed.  Consider the given examples.

class X

{int fun( );

};

class Y

{friend int X::fun( ); //Member function fun in class X is friend function in class Y

};

class Z

{friend class X;  //All the members of X is a friend class in X

};

 

Program to share function between classes:

Note: Remember the private data member can be accessed outside the class only through friend function with object class as argument.

 

class ABC; //Forward declaration

class XYZ

{int x;

public:

void setvalue(int i)

{x=i;}

friend void max(XYZ,ABC); // friend void max(XYZ &,ABC &);

};

class ABC

{int a;

public:

void setvalue(int i)

{a=i;}

friend void max(XYZ,ABC); // friend void max(XYZ &,ABC &);

};

void max(XYZ m, ABC n) // void max(XYZ &m, ABC &n)

{if(m.x>n.a)

cout<

 

else

 

}

int main()

{clrscr();

 

 

cout<

 

ABC abc; XYZ xyz; abc.setvalue(100); xyz.setvalue(200); max(xyz,abc);

return 0;}

 

The above program depicts how a friend function is shared between classes, class must be declared in the beginning this is called forward declaration.  The above friend function can be called be reference, the advantage of call by reference is the objects are not created locally at the main program instead the pointer to the address of the object is passed.

The member function can be declared constant member function by using the following syntax in the declaration.

void  mult(int,int)  const;  The  two  argument  int  cannot  be  changed  in  the  function definition.  The keyword const must be used as shown above.


Related Discussions:- Friendly function and rules of friend function

Padovan string, #questio#A Padovan string P(n) for a natural number n is de...

#questio#A Padovan string P(n) for a natural number n is defined as: P(0) = ‘X’ P(1) = ‘Y’ P(2) = ‘Z’ P(n) = P(n-2) + P(n-3), n>2 where + denotes string concatenation. For a string

Microprocessor programming, I need to program a microprocessor that would h...

I need to program a microprocessor that would have a temperature, gas, humidity and PIR sensor connected to it. It would send the data to a PC via a Zigbee and receive commands fro

Define some important point for bit fields with structures, Define some Imp...

Define some Important Point for bit fields with structures? Only n lower bits will be assigned to an n bit number thus type cannot take values larger than 15 (4 bits long)

Write a c program to compute the value of a sine wave, Write a C program to...

Write a C program to compute the value of a sine wave from 0 to 2P with an increment of 0.1 radians.   #include stdio.h #include math.h #define pi 3.1415927 void main() {   c

Basic concepts, what is the diffeerence between c and c++

what is the diffeerence between c and c++

Convert a cov-cpe file to a tif image file, Convert a COV/CPE (Micosoft Fax...

Convert a COV/CPE (Micosoft Fax Cover Page) file to a TIF image file Project Description: I would like a small API written that will take a COV/CPE file and replaced the corr

C program for function of copy one string in other string, C Program for FU...

C Program for FUNCTION OF COPY ONE STRING IN OTHER STRING #include stdio.h> #include conio.h> int copy(char a[],char b[]); void main() {           char a[100],b[

#psuedocode, Create a pseudocode in getting Calendar Quarter. The program s...

Create a pseudocode in getting Calendar Quarter. The program should identify which quarter falls the given date. Note: Consider the date format DDMMYYYY.

String, Byteland county is very famous for luminous jewels. Luminous jewels...

Byteland county is very famous for luminous jewels. Luminous jewels are used in making beautiful necklaces. A necklace consists of various luminous jewels of particular colour. Nec

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd