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.