¿Por qué el operador de asignación de copias debe devolver una referencia / referencia constante?

En C ++, el concepto de devolución de referencia del operador de asignación de copias no me resulta claro. ¿Por qué el operador de asignación de copias no puede devolver una copia del nuevo objeto? Además, si tengo claseAy lo siguiente:

A a1(param);
A a2 = a1;
A a3;

a3 = a2; //<--- this is the problematic line

losoperator= se define de la siguiente manera:

A A::operator=(const A& a)
{
    if (this == &a)
    {
        return *this;
    }
    param = a.param;
    return *this;
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta