7

今天我对朋友功能有疑问。两个班级可以有相同的朋友功能吗?说 friend void f1(); 在 A 类和 B 类中声明的示例。这可能吗?如果是这样,函数 f1() 可以访问两个类的成员吗?

4

4 回答 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 回答