今天我对朋友功能有疑问。两个班级可以有相同的朋友功能吗?说
friend void f1();
在 A 类和 B 类中声明的示例。这可能吗?如果是这样,函数 f1() 可以访问两个类的成员吗?
问问题
15345 次
4 回答
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;
}
希望这可以帮助!
于 2013-08-23T18:14:40.150 回答
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;
}
于 2014-01-22T12:15:32.187 回答
1
对什么函数可以或不能是friends
's没有限制class
,所以是的,这没有问题。
于 2013-08-23T13:44:03.090 回答
-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);
}
于 2017-05-05T17:31:37.783 回答