Могут ли 2 класса совместно использовать функцию друга?

Сегодня у меня есть сомнения относительно функции друга.
Могут ли два класса иметь одну и ту же функцию друга?
Скажи пример
friend void f1();
заявлено в классе A и классе B. Возможно ли это? Если да, может ли функция f1 () получить доступ к членам двух классов?

7

Решение

Пример объяснит это лучше всего:

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

Надеюсь это поможет!

16

Другие решения

исправление к вышеуказанному коду

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

Нет никаких ограничений на то, что функция может или не может быть friendsиз classДа, да, с этим проблем нет.

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);
}
-2
По вопросам рекламы [email protected]