Possiamo dichiarare il costruttore di una classe come amico? Penso che non possa essere. Ma ho letto da qualche parte che può essere, ma non ero in grado di farlo. Se sì, puoi fornire qualche codice di esempio.Una funzione di costruzione può essere un amico in C++?
24
A
risposta
30
Sì, è possibile:
class Y
{
public:
Y();
};
class X
{
private:
void foo() {}
friend Y::Y();
};
Y::Y()
{
X x; x.foo();
}
come da 11.3 Amici [class.friend]
5) Quando una dichiarazione amico fa riferimento a un nome o un operatore di overload, solo la funzione specificata dai tipi di parametro diventa un amico. Una funzione membro di una classe X può essere un amico di una classe di Y.
[Esempio:
class Y {
friend char* X::foo(int);
friend X::X(char); // constructors can be friends
friend X::~X(); // destructors can be friends
};
-end esempio]
(sottolineatura mia)
Problemi correlati
- 1. Funzioni amico in C++
- 2. funzione amico in php?
- 3. Un amico di A <T> può anche essere un amico di A <A<T>>?
- 4. Perché una funzione membro PRIVATE non può essere una funzione di amicizia di un'altra classe?
- 5. Un argomento modello template da un altro spazio dei nomi può essere un amico?
- 6. Come può (1 +) essere mai una funzione?
- 7. È possibile avere una funzione di costruzione in un tratto?
- 8. Possiamo dichiarare una funzione amico senza argomento?
- 9. Modellazione amico di amico rapporti in MongoDB
- 10. È legale ad un amico una funzione tramite una dichiarazione usando?
- 11. Come può un compilatore C essere scritto in C?
- 12. C++ funzione amico - sovraccarico operatore istream >>
- 13. PTHREAD_MUTEX_INITIALIZER all'interno della funzione membro C++ non può essere compilato?
- 14. È un cast o una costruzione?
- 15. Lo specificatore di accesso è importante per una funzione amico?
- 16. In C++, l'aggiunta di un amico ad una classe cambia il suo layout di memoria?
- 17. Un metodo all'interno di una classe può essere un generatore?
- 18. una chiave di classe deve essere dichiarata quando si dichiara un amico
- 19. perché una variabile locale non può essere volatile in C#?
- 20. C++ aggiungendo amico a una classe template per typecast
- 21. GCC rivendica una funzione amico per essere sovraccaricato, chiamata ambigua, clang compila
- 22. Un puntatore a una funzione associata può essere utilizzato solo per chiamare la funzione
- 23. C++ - Funzione di costruzione sovraccarico - privati e pubblici
- 24. Classe C++ con amico obiettivo-
- 25. C++: amico funzione in una classe template per l'operatore <<
- 26. Può std :: funzione di essere utilizzata per memorizzare una funzione con argomenti variadic
- 27. Questa funzione può essere raccolta automaticamente?
- 28. amico classe non può accedere membro protetto
- 29. In C, main non deve essere una funzione?
- 30. È stata ereditata la funzione amico qui?
Perché non dichiarare l'intera classe come amico? – wilx
inserisci il tuo codice. –
@KarolyHorvath: È utile in generale, ma cosa mostreresti qui? 'amico;'? Questo non aggiunge nulla a questa domanda. –
MSalters