Today i have a doubt regarding friend function.
Can two classes have same friend function?
Say example
friend void f1();
declared in class A and class B. Is this possible? If so, can a function f1() can access the members of two classes?
A friend class can access private and protected members of other classes in which it is declared as a friend. It is sometimes useful to allow a particular class to access private members of another class.
So this can use even the private variables "a,b" of the class "friendcl". The function "sum" is not a member of any class. The "x" is an object of the class "friendcl" function, which is declared in the friend function to pass arguments. Thus, a bridge between two classes, i.e. "sum" and "friendcl" can be established.
Functions declared with the friend specifier in a class member list are called friend functions of that class. Classes declared with the friend specifier in the member list of another class are called friend classes of that class.
No. You cannot inherited friend function in C++. It is strictly one-one relationship between two classes. Friendship is neither inherited nor transitive.
An example will explain this best:
class B; //defined later
void add(A,B);
class A{
private:
int a;
public:
A(){
a = 100;
}
friend void add(A,B);
};
class B{
private:
int b;
public:
B(){
b = 100;
}
friend void add(A,B);
};
void add (A Aobj, B Bobj){
cout << (Aobj.a + Bobj.b);
}
main(){
A A1;
B B1;
add(A1,B1);
return 0;
}
Hope this helps!
There is no restriction on what function can or cannot be friends
's of class
's, so yes there's no problem with this.
correction to the above code
#include<iostream>
using namespace std;
class B; //defined later
class A; //correction (A also need be specified)
void add(A,B);
class A{
private:
int a;
public:
A(){
a = 100;
}
friend void add(A,B);
};
class B{
private:
int b;
public:
B(){
b = 100;
}
friend void add(A,B);
};
void add (A Aobj, B Bobj){
cout << (Aobj.a + Bobj.b);
}
main(){
A A1;
B B1;
add(A1,B1);
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With