Ciao a tutti, volevo chiedere, quale tra questi due codici è il più corretto?

A)
codice:
class C
{
    public:
        int n;
        explicit C(int m = 0){ n=m; }

        C operator +(C o){ return C(n+o.n); }
};
oppure B)
codice:
class C
{
    public:
        int n;
        explicit C(int m = 0){ n=m; }

        C operator +(C o){ n += o.n; return *this; }
};
? Cioè è meglio creare un nuovo oggetto o modificare quello già esistente?

Grazie