Oggi ho un dubbio sulla funzione amico. Due classi possono avere la stessa funzione di amicizia? Dire esempio friend void f1();
dichiarato in classe A e classe B. È possibile? In tal caso, una funzione f1() può accedere ai membri di due classi?2 classi possono condividere una funzione di amicizia?
risposta
Non c'è alcuna limitazione su quale funzione può o non può essere friends
di class
, quindi sì, non c'è alcun problema con questo.
Bene, devi essere in grado di nominare la funzione, ma questa è una restrizione naturale. Per esempio. 'struct {static void foo(); }; 'o funziona in spazi dei nomi anonimi in altre unità di traduzione. – MSalters
Un esempio spiegherà meglio questo:
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;
}
Spero che questo aiuti!
Grazie mille, l'esempio è stato molto bello e facile da capire – user2236974
Siete i benvenuti! – iluvthee07
correzione al codice di cui sopra
#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);
}
- 1. la dichiarazione di amicizia dichiara una funzione non modello
- 2. Come condividere una variabile tra due classi?
- 3. Perché una funzione membro PRIVATE non può essere una funzione di amicizia di un'altra classe?
- 4. Due applicazioni Silverlight possono condividere IsolatedStorage su una macchina?
- 5. come condividere costanti (enumerazioni) tra le classi?
- 6. Due browser diversi possono condividere un cookie?
- 7. Classe amicizia - un puzzle
- 8. Le 2 variabili di condizione pthread possono condividere lo stesso mutex?
- 9. C++ non mi permette di fare amicizia
- 10. Condividere le variabili tra classi e metodi
- 11. Amicizia modello specifico in C++
- 12. Hibernate Distributed Cache: più applicazioni possono condividere la stessa cache?
- 13. Quali classi non possono essere sottoclasse?
- 14. Le specializzazioni di una funzione modello possono essere virtuali?
- 15. Come restituire classi diverse da una funzione?
- 16. C#/winform: come possono due dinamicamente condividere lo spazio disponibile?
- 17. unica coppia in un database "amicizia"
- 18. CSS3 - “Collegamento” 2 classi di animazione
- 19. Come posso condividere i modelli di mangusta tra 2 app?
- 20. Le classi Xcode non possono "vedersi"
- 21. Le classi astratte possono implementare in C#?
- 22. Laravel ORM Amicizia Relazione senza duplicazione
- 23. PHP - definizione di classi all'interno di una funzione
- 24. Le chiamate di funzione possono essere riordinate
- 25. C++ Dichiarazione di andata e amicizia in Namespace
- 26. Come condividere i dati tra classi separate in Java
- 27. Classi di fabbrica e chiusure in Zend Framework 2
- 28. Le seguenti classi non possono essere istanziate: android.support.design.widget.CoordinatorLayout
- 29. d3 aggiungere più classi con funzione di
- 30. Does Sublime Text 2 ha una funzione di completamento automatico?
Sì, è possibile. Sì, 'f1()' avrebbe accesso ai membri di entrambe le classi. – juanchopanza
Hai provato a compilare un semplice esempio? Sembra che sarebbe facile da testare. – Max
Cosa ti fa pensare che questo non sarebbe possibile? – stijn