Heute habe ich Zweifel bezüglich der Funktion von Freunden. Können zwei Klassen dieselbe Friend-Funktion haben? Sagen Sie Beispiel friend void f1();
deklariert in Klasse A und Klasse B. Ist das möglich? Wenn ja, kann eine Funktion f1() auf die Mitglieder zweier Klassen zugreifen?Können 2 Klassen eine Freundesfunktion teilen?
Antwort
Es gibt keine Einschränkung auf welche Funktion friends
's von class
' s sein kann oder kann, also ja, es gibt kein Problem damit.
Nun, Sie müssen in der Lage sein, die Funktion zu benennen, aber das ist eine natürliche Einschränkung. Z.B. 'struct {statische Leere foo(); }; 'oder funktioniert in anonymen Namespaces in anderen Übersetzungseinheiten. – MSalters
Ein Beispiel wird erklärt, dies am besten:
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;
}
hoffe, das hilft!
Vielen Dank Mann Ihr Beispiel war sehr nett und leicht zu verstehen – user2236974
Gern geschehen! – iluvthee07
Korrektur der obigen Code
#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);
}
Ja, es ist möglich. Ja, 'f1()' hätte Zugriff auf Mitglieder beider Klassen. – juanchopanza
Haben Sie versucht, ein einfaches Beispiel zu erstellen? Dies scheint so zu sein, als wäre es leicht zu testen. – Max
Was lässt Sie denken, dass dies nicht möglich wäre? – stijn