Warum muss der Kopierzuweisungsoperator eine Referenz / Konstantenreferenz zurückgeben?

In C ++ ist mir das Konzept der Rückgabe der Referenz vom Kopierzuweisungsoperator unklar. Warum kann der Operator für die Zuweisung von Kopien keine Kopie des neuen Objekts zurückgeben? Außerdem, wenn ich KlasseA, und die folgende

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

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

Dasoperator= ist wie folgt definiert:

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