可以两个类共享一个好友功能

Can 2 classes share a friend function?

本文关键字:一个 好友 功能 共享 两个      更新时间:2023-10-16

今天我对friend函数有一个疑问。两个类可以有相同的友元函数吗?举个例子friend void f1();在A类和B类中声明。这可能吗?如果是,函数f1()是否可以访问两个类的成员?

一个例子可以最好地解释这一点:

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;
}

希望这能有所帮助!

什么函数可以或不能是classfriends没有限制,所以是的,这没有问题。

对上述代码的更正

#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;
}
#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);
}