Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Domanda su overload operatori

    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

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Rifletti un attimo: una somma modifica i suoi addendi?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Originariamente inviato da shodan
    Rifletti un attimo: una somma modifica i suoi addendi?
    hai ragione, è una domanda stupidissima! ovvio che no, la B non ha senso...

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Però la B è l'implementazione dell'operatore +=, che può far comodo.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  5. #5
    Infatti te lo stavo per chiedere, quindi quel codice va benissimo per il += giusto?

    Domandina: ma come mai, una volta definiti il + e l'= non esiste un += di default, che fa - appunto - quello che dovrebbe fare il +=, cioè trasformare "a+=b" in "a=a+b" dove sia + che = esistono? Ovviamente per mille motivi uno potrebbe ridefinirlo per fargli fare quello che è più opportuno fare, però in casi semplici in genere il "comportamento di default" sarebbe corretto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.