Ciao ragazzi, nn riesco a spiegarmi una cosa e sicurmente qualcuno di voi può darmi una mano.
Ho creato una classe di nome Lobby
codice:
class Lobby
{
friend ostream& operator<<(ostream& os, const Lobby& aLobby);
public:
Lobby();
~Lobby();
Lobby(const Lobby& aLobby);
Lobby& Lobby::operator=(const Lobby& aLobby);
void AddPlayer();
void RemovePlayer();
void Clear();
private:
Player* m_pHead;
};
è praticamente una lista linkata di Player.
Come si può vedere dal codice ho sovraccaricato l'operatore di assegnamento e il costruttore di copia.
In seguito ho definito una funzione per il test dell'assegnamento
codice:
void testAssignOp(Lobby& aLobby)
{
//Lobby lobby = aLobby; //ERRATO, richiama il Copy Constructor
Lobby lobby;
lobby = aLobby; //giusto richiama l'operatore = overloaded
cout << "Lobby copiata:\n" << lobby;
cout << endl;
}
Non riesco a capire perchè se scrivo
codice:
Lobby lobby = aLobby;
mi richiama il costruttore copia
mentre se scrivo
codice:
Lobby lobby;
lobby = aLobby;
mi richiama l'operatore di assegnamento sovraccaricato.
Illuminatemi vi prego