Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Motto di Nixon: Se due torti non fanno una ragione, prova con tre.

Anonimo 

Sondaggio:

Quale radio ascolti solitamente?

Radio Rai
Radio Deejay
Radio Italia
Disco Radio
Radio Dimensione Suono
Radio Montecarlo
RTL 102.5
Altro

visualizza risultati


 

Conclusioni

 

Per terminare questo argomento restano da citare gli operatori per la conversione di tipo e analizzare la differenza tra operatori come funzioni globali o come funzioni membro.
Per quanto riguarda la conversione di tipo, si rimanda all'appendice A.
Solitamente non c'e` differenza tra un operatore definito globalmente e uno analogo definito come funzione membro, nel primo caso per ovvi motivi l'operatore viene solitamente dichiarato friend delle classi cui appartengono i suoi argomenti; nel caso di una funzione membro, il primo argomento e` sempre una istanza della classe e l'operatore puo` accedere a tutti i suoi membri, per quanto riguarda l'eventuale secondo argomento puo` essere necessaria dichiararlo friend nell'altra classe. Per il resto non ci sono differenze per il compilatore, nessuno dei due metodi e` piu` efficiente dell'altro; tuttavia non sempre e` possibile utilizzare una funzione membro, ad esempio se si vuole permettere il flusso su stream della propria classe , e` necessario ricorrere ad una funzione globale, perche` il primo argomento non e` una istanza della classe:


  class Complex {
    public:
      /* ... */

    private:
      float Re, Im;
      friend ostream& operator<<(ostream& os,
                                 Complex& C);
  };

  ostream& operator<<(ostream& os, Complex& C) {
    os << C.Re << " + i" << C.Im;
    return os;
  }


Adesso e` possibile scrivere


  Complex C(1.0, 2.3);

  cout << C;

 

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2022 Cataldo Sasso