Operatori in C e C++: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 14:
Nel caso degli operatori, il numero degli operandi e la priorità dell’operatore sovraccaricato sono le stesse dell’operatore predefinito, mentre il nuovo operatore può essere definito come una funzione membro oppure come una ''funzione friend'' (funzione amica).
==
Nelle tabelle seguenti, <code>a</code>, <code>b</code> e <code>c</code> rappresentano valori validi qualsiasi (''literals'', valori da variabili, oppure ''return value'') o, in alcuni casi specifici, nomi di oggetti o ''lvalues''. <code>R</code>, <code>S</code> e <code>T</code> indicano qualsiasi tipo, mentre <code>K</code> indica un tipo di classe o un tipo ''enum''.
Riga 25:
! colspan="2" |Esempi di implementazione in C++
|-
!Come membro
!Fuori dalla classe
|-
Riga 99:
! colspan="2" |Esempi di implementazione in C++
|-
!Come membro
!Fuori dalla classe
|-
Riga 135:
=== Operatori logici (o booleani) ===
Tutti gli operatori logici (o [[Booleano (informatica)|booleani]]<ref>L'accezione ''booleana'' è stata coniata in onore del matematico [[George Boole]]. </ref>) sono esistenti sia in [[C (linguaggio di programmazione)|C]] che in [[C++]] e possono essere chiaramente sovraccaricati solo in quest'ultimo linguaggio di programmazione.
Nonostante la possibilità di sovraccarico in C++, tale operazione è sconsigliata con AND logico e OR logico sia sconsigliato perché, come operatori sovraccaricati, si comporterebbero come normali chiamate di funzione, il che significa che ''entrambi'' i loro operandi verrebbero valutati, perdendo di conseguenza la loro importante [[valutazione di McCarthy]]. <ref>{{Cita web|url=https://isocpp.org/wiki/faq/operator-overloading}}</ref>
Riga 143:
! colspan="2" | Esempi di implementazione in C++
|-
! Come membro
! Fuori dalla classe
|-
Riga 170:
! colspan="2" |Esempi di implementazione in C++
|-
!Come membro
!Fuori dalla classe
|-
Riga 204:
|}
=== Operatori ed espressioni di
Per gli operatori indicati, la semantica dell'espressione di assegnazione combinata incorporata <code>a ⊚= b</code> è equivalente a <code>a = a ⊚ b</code>, eccetto per il fatto che <code>a</code> viene valutata una sola volta.
{| class="wikitable
|+
! rowspan="2" |Operator name▼
! rowspan="2" |
!
! colspan="2" |Esempi di implementazione in C++
|-
!Come membro della classe K
!Fuori dalla classe
|-
!Espressione semplice di assegnamento
|
|
|-
|
|
|-
|<code>a '''-=''' b</code>
|
|-
|<code>a '''*=''' b</code>
|
|-
|<code>a '''/=''' b</code>
|
|-
|<code>a '''%=''' b</code>
|
|-
|<code>a '''&=''' b</code>
|
|-
|<code>a '''<nowiki>|</nowiki>=''' b</code>
|
|-
|<code>a '''^=''' b</code>
|
|-
|<code>a '''<<=''' b</code>
|
|-
|<code>a '''>>=''' b</code>
|
|}
|