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