Operatori in C e C++: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "Operators in C and C++"
 
Nessun oggetto della modifica
Riga 1:
{| class="wikitable" style="width:100%"
! colspan="2" rowspan="2" |Operator name
! rowspan="2" |Syntax
! rowspan="2" |Can overload in C++
! rowspan="2" |Included<br /><br />in [[C (linguaggio di programmazione)|C]]
! colspan="2" |C++ prototype examples
|-
!As member of K
!Outside class definitions
|-
| class="table-rh" colspan="2" {{rh}} width="23%" |[[Indexer (programming)|Subscript]]
| align="center" width="11%" |<code>a'''['''b''']'''</code>
| width="8%" {{Sit}}
| width="8%" {{Sit}}
|{{cpp|R& K::operator [](S b);}}<br /><br />{{cpp|R& K::operator [](S b, ...); // since C++23}}<br /><br />
| width="25%" {{ND}}
|-
| class="table-rh" colspan="2" {{rh}} |Indirection ("object pointed to by ''a''")
| style="text-align:center;" |<code>'''*'''a</code>|| {{Sit}} || {{Sit}}
|{{cpp|R& K::operator *();}}
|{{cpp|R& operator *(K a);}}
|-
| class="table-rh" colspan="2" {{rh}} |Address-of ("address of ''a''")
| style="text-align:center;" |<code>'''&'''a</code>|| {{Sit}}<ref name="addressof2" group="lower-alpha"/> || {{Sit}}
|{{cpp|R* K::operator &();}}
|{{cpp|R* operator &(K a);}}
|-
| class="table-rh" colspan="2" {{rh}} |Structure dereference ("member ''b'' of object pointed to by ''a''")
| style="text-align:center;" |<code>a'''->'''b</code>|| {{Sit}} || {{Sit}}
|{{cpp|R* K::operator ->();}}<br /><br />
| {{ND}}
|-
| class="table-rh" colspan="2" {{rh}} |Structure reference ("member ''b'' of object ''a''")
| style="text-align:center;" |<code>a'''.'''b</code>|| {{Not}} || {{Sit}}
| {{rh}} colspan="2" {{ND}}
|-
| class="table-rh" colspan="2" {{rh}} |Member selected by [[pointer-to-member]] ''b'' of object pointed to by ''a''<ref name="arrowstar" group="lower-alpha" />
| style="text-align:center;" |<code>a'''->*'''b</code>|| {{Sit}} || {{Not}}
|{{cpp|R& K::operator ->*(S b);}}
|{{cpp|R& operator ->*(K a, S b);}}
|-
| class="table-rh" colspan="2" {{rh}} |Member of object ''a'' selected by [[pointer-to-member]] ''b''
| style="text-align:center;" |<code>a'''.*'''b</code>|| {{Not}} || {{Not}}
| {{rh}} colspan="2" {{ND}}
|}
Questa è una lista degli [[Operatore (informatica)|operatori]] nei [[Linguaggio di programmazione|linguaggi di programmazione]] [[C (linguaggio di programmazione)|C]] e [[C++]]. Tutti gli operatori elencati di seguito (eccetto ''typeof'') esistono nel linguaggio C++, mentre in C solo quelli indicati nella colonna “Incluso in C”.
 
 
C++ include inoltre gli operatori ''type conversion'' (): const_cast, static_cast, dynamic_cast, e reinterpret_cast. La formattazione di questi operatori intende che il livello di precedenza è irrilevante.
 
Molti degli operatori disponibili in C e C++ sono implementabili anche in altri linguaggi della “C family”, quali [[C sharp|C#]], [[D (linguaggio di programmazione)|D]], ma anche [[Java (linguaggio di programmazione)|Java]], [[Perl]] e [[PHP]], con le stesse caratteristiche (precedenze, associatività e semantica).
 
== Overloading degli operatori ==
[[C++]] possiede molti operatori già predifiniti in grado di operare su vari [[Tipo di dato|tipi di dato]], perciò si può parlare di “operatori già sovraccaricati”. Per esempio l’operatore <code>+</code> può essere implementato per sommare sia due variabili di tipo <code>int</code> (interi), sia due variabili di tipo <code>float</code> o <code>double</code> (variabili a virgola mobile).
 
Oltre a quando detto in precedenza, il programmatore può anche “estendere” l’operatività di ciascuno di essi; per esempio operandi complessi definiti con le classi, si potrebbero trattare anche come se fossero dati semplici.
 
In C++ è possibile sovraccaricare tutti gli operatori predifiniti, con l’eccezione su accesso al membro <code>(.)</code>, indirezione di accesso al membro <code>(.*)</code> e risoluzione di ambito <code>(::)</code>.
 
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).
 
== Tabella degli operatori ==
Riga 360 ⟶ 323:
[[Categoria:C++]]
[[Categoria:C]]</nowiki>
<references group="lower-alpha" />