今天我对朋友的功能有疑问。
两个班可以有相同的朋友功能吗?
举个例子
friend void f1();
在A级和B级宣布。这可能吗?如果是这样,函数f1()可以访问两个类的成员吗?
答案 0 :(得分:16)
一个例子可以解释这个:
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;
}
希望这有帮助!
答案 1 :(得分:1)
对friends
的{{1}} class
的功能有什么或不可以有任何限制,所以是的,这没问题。
答案 2 :(得分:1)
修正上述代码
#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;
}
答案 3 :(得分:-2)
#include<iostream>
using namespace std;
class first
{
friend void getdata(first object1, int i);
};
class second
{
friend void getdata(second object2, int j);
};
getdata(first object1, int i, second object2, int j)
{
cout<<i+j;
}
main()
{
first object1;
second object2;
getdata(object1, 5, object2, 7);
}