Por que o operador de atribuição de cópia deve retornar uma referência / referência const?

Em C ++, o conceito de retornar referência do operador de atribuição de cópia não é claro para mim. Por que o operador de atribuição de cópia não pode retornar uma cópia do novo objeto? Além disso, se eu tiver aulaAe o seguinte:

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

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

ooperator= é definido da seguinte maneira:

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

questionAnswers(6)

yourAnswerToTheQuestion