SantoshNarayan
Technical User
A friend function means a non-member routine which has access to the
private and protected members of a class. Friend is a keyword used within
a class definition to let the class know that this routine can access
its private or protected members which are not accessible from anywhere
outside the class.
Friend functions are other "normal" routines of any program and have
their code defined like other such routines.
But this code illustrates how friends can have their code defined within
a class type.
HOW IS THIS POSSIBLE ? INFACT WHAT DOES IT MEAN ?
I wrote this code when I was trying to find a solution to my
previous query posted at this forum titled "Passing generic class objects
to non-member routines ? How to ?". That problem got solved implicitly
through this only to give me a new problem.
#include <iostream>
using namespace std;
template <typename mytype> class myclass
{
mytype val;
public :
myclass(mytype i){ val = i; }
mytype func(){ return val; }
friend void outfunc(myclass <mytype> &obj)
{
cout << obj.func() << endl;
}
};
int main()
{
myclass ext(11);
cout << ext.func() << endl;
outfunc(ext);
return 0;
}
private and protected members of a class. Friend is a keyword used within
a class definition to let the class know that this routine can access
its private or protected members which are not accessible from anywhere
outside the class.
Friend functions are other "normal" routines of any program and have
their code defined like other such routines.
But this code illustrates how friends can have their code defined within
a class type.
HOW IS THIS POSSIBLE ? INFACT WHAT DOES IT MEAN ?
I wrote this code when I was trying to find a solution to my
previous query posted at this forum titled "Passing generic class objects
to non-member routines ? How to ?". That problem got solved implicitly
through this only to give me a new problem.
#include <iostream>
using namespace std;
template <typename mytype> class myclass
{
mytype val;
public :
myclass(mytype i){ val = i; }
mytype func(){ return val; }
friend void outfunc(myclass <mytype> &obj)
{
cout << obj.func() << endl;
}
};
int main()
{
myclass ext(11);
cout << ext.func() << endl;
outfunc(ext);
return 0;
}