Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Troviamo che siano di buon senso soltanto le persone che la pensano come noi.

Fran?ois De La Rochefoucauld 

Sondaggio:

Cosa pensi della pena di morte?

Dovrebbero abolirla in tutto il mondo
A volte ? necessaria
Ammazzateli tutti quei b... delinquenti
Va contro ogni principio umano
Non mi interessa

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