Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Alleanza, s.f.: In politica internazionale, l'unione di due ladri che hanno le loro mani cosi' profondamente inserite nelle tasche dell'altro da non poter separatamente saccheggiare un terzo.

Ambrose Bierce 

Sondaggio:

Quale fra queste coppie di comici preferisci?

Totò e Peppino
Stanlio e Olio
Franco e Ciccio
Greggio e Iacchetti
Ale e Franz

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-2009 Cataldo Sasso