Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operatory jednoargumentowe generują wynik z jednego operandu. Można zdefiniować przeciążenia standardowego zestawu operatorów jednoargumentowych do pracy z typami zdefiniowanymi przez użytkownika.
Przeciążone operatory jednoargumentowe
Następujące operatory jednoargumentowe można przeciążyć na typach zdefiniowanych przez użytkownika:
!
(logiczne NOT)&
(adres-of)~
(uzupełnienie)*
(wyłudliwość wskaźnika)++
(przyrostek prefiksu) lub (przyrostek postfiksu)--
(dekrementacja prefiksu) lub (dekrementacja postfiksu)
Deklaracje przeciążenia operatora jednoargumentowego
Można zadeklarować przeciążone operatory jednoargumentowe jako funkcje niestatyczne składowe lub jako funkcje niezwiązane. Przeciążone funkcje jednoargumentowe nie przyjmują argumentu, ponieważ niejawnie działają na .this
Funkcje inne niż liczba są deklarowane przy użyciu jednego argumentu. Po zadeklarowaniu obu formularzy kompilator jest zgodny z regułami rozpoznawania przeciążenia, aby określić, która funkcja ma być używana, jeśli istnieje.
Następujące reguły dotyczą wszystkich operatorów jednoargumentowych prefiksów. Aby zadeklarować funkcję operatora jednoargumentowego jako funkcję niestacyjną składową, użyj tego formularza deklaracji:
return-type
operator
op
();
W tym formularzu return-type
jest zwracany typ i op
jest jednym z operatorów wymienionych w poprzedniej tabeli.
Aby zadeklarować funkcję operatora jednoargumentowego jako funkcję nieczłonkową, użyj tego formularza deklaracji:
return-type
operator
op
(
class-type
);
W tym formularzu return-type
jest zwracany typ, op
jest jednym z operatorów wymienionych w poprzedniej tabeli i class-type
jest typem klasy argumentu, na którym ma działać.
Formularze postfiksów ++
i --
przyjmują dodatkowy int
argument, aby odróżnić je od formularzy prefiksów. Aby uzyskać więcej informacji na temat prefiksu i formularzy postfiksów ++
i --
, zobacz Przeciążenie operatora inkrementacji i dekrementacji.
Uwaga
Nie ma żadnych ograniczeń dotyczących typów zwracanych operatorów jednoargumentowych. Na przykład warto zwrócić wartość logiczną NOT (!
), bool
ale to zachowanie nie jest wymuszane.