Język C++ obejmuje wszystkie operatory C i dodaje kilka nowych operatorów. Operatory określają oszacowania wykonywane na jednym lub większej liczbie operandów.
Pierwszeństwo i kojarzenie
Pierwszeństwo operatora określa kolejność operacji w wyrażeniach zawierających więcej niż jeden operator. Skojarzenie operatora określa, czy w wyrażeniu, które zawiera wiele operatorów o tym samym pierwszeństwie, operand jest grupowany z tym, który znajduje się po lewej stronie, czy z jednej po prawej stronie.
Alternatywne pisownie
Język C++ określa alternatywne pisownie dla niektórych operatorów. W języku C alternatywne pisownie są udostępniane jako makra w nagłówku <iso646.h> . W języku C++te alternatywy są słowami kluczowymi, a użycie iso646.h> lub równoważnego <<ciso646> języka C++ jest przestarzałe. W języku Microsoft C++ /permissive-
opcja lub /Za
kompilatora jest wymagana do włączenia alternatywnych pisowni.
Pierwszeństwo operatora języka C++ i tabela asocjacji
W poniższej tabeli przedstawiono pierwszeństwo i łączność operatorów C++ (od najwyższego do najniższego pierwszeństwa). Operatory o tym samym numerze pierwszeństwa mają równe pierwszeństwo, chyba inny stosunek jest jawnie wymuszony przez nawiasy.
Opis operatora |
Operator |
Alternatywne rozwiązanie |
Pierwszeństwo grupy 1, brak kojarzenia |
|
|
Rozpoznawanie zakresu |
:: |
|
Pierwszeństwo grupy 2, od lewej do prawej skojarzenia |
|
|
Wybór elementu członkowskiego (obiekt lub wskaźnik) |
. lub -> |
|
Indeks dolny tablicy |
[] |
|
Wywołanie funkcji |
() |
|
Przyrostek postfiksu |
++ |
|
Dekrementacja przyrostka |
-- |
|
Nazwa typu |
typeid |
|
Konwersja typu stałego |
const_cast |
|
Konwersja typu dynamicznego |
dynamic_cast |
|
Ponowne interpretowanie konwersji typów |
reinterpret_cast |
|
Konwersja typu statycznego |
static_cast |
|
Pierwszeństwo grupy 3, od prawej do lewej asocjacji |
|
|
Rozmiar obiektu lub typu |
sizeof |
|
Przyrostek prefiksu |
++ |
|
Dekrementacja prefiksu |
-- |
|
Uzupełnieniem jednego |
~ |
compl |
Nie logiczne |
! |
not |
Negacja jednoargumentowa |
- |
|
Jednoargumentowy plus |
+ |
|
Adres-of |
& |
|
Pośrednia |
* |
|
Tworzenie obiektu |
new |
|
Niszczenie obiektu |
delete |
|
Obsada |
() |
|
Pierwszeństwo grupy 4, od lewej do prawej asocjacji |
|
|
Wskaźnik do elementu członkowskiego (obiekty lub wskaźniki) |
.* lub ->* |
|
Pierwszeństwo grupy 5, od lewej do prawej skojarzenia |
|
|
Mnożenie |
* |
|
Dzielenie |
/ |
|
Modulo |
% |
|
Pierwszeństwo grupy 6, od lewej do prawej asocjacji |
|
|
Dodatek |
+ |
|
Odejmowanie |
- |
|
Pierwszeństwo grupy 7, od lewej do prawej kojarzenie |
|
|
Przesunięcie w lewo |
<< |
|
Przesunięcie w prawo |
>> |
|
Pierwszeństwo grupy 8, od lewej do prawej skojarzenia |
|
|
Mniejsze niż |
< |
|
Większe niż |
> |
|
Mniejsze niż lub równe |
<= |
|
Większe niż lub równe |
>= |
|
Pierwszeństwo grupy 9, od lewej do prawej skojarzenia |
|
|
Równość |
== |
|
Nierówność |
!= |
not_eq |
Grupa 10 pierwszeństwo od lewej do prawej skojarzenia |
|
|
Bitowe I |
& |
bitand |
Pierwszeństwo grupy 11, od lewej do prawej skojarzenia |
|
|
Bitowe wyłączne OR |
^ |
xor |
Pierwszeństwo grupy 12, od lewej do prawej skojarzenia |
|
|
Bitowe or inkluzywne OR |
| |
bitor |
Pierwszeństwo grupy 13, od lewej do prawej skojarzenia |
|
|
Logiczne AND |
&& |
and |
Pierwszeństwo grupy 14, od lewej do prawej skojarzenia |
|
|
Logiczne OR |
|| |
or |
Pierwszeństwo grupy 15, od prawej do lewej skojarzenia |
|
|
Warunkowe |
? : |
|
Przypisanie |
= |
|
Przypisanie mnożenia |
*= |
|
Przypisanie dzielenia |
/= |
|
Przypisanie modulo |
%= |
|
Dodawanie przypisania |
+= |
|
Przypisanie odejmowania |
-= |
|
Przypisanie przesunięcia w lewo |
<<= |
|
Przypisanie przesunięcia w prawo |
>>= |
|
Bitowe i przypisanie |
&= |
and_eq |
Bitowe inkluzywne or przypisania |
|= |
or_eq |
Bitowe wyłączne or przypisania |
^= |
xor_eq |
wyrażenie throw |
throw |
|
Pierwszeństwo grupy 16, od lewej do prawej skojarzenia |
|
|
Comma |
, |
|
Zobacz też
Przeciążenie operatora