Udostępnij za pośrednictwem


Przeładowanie operatorów jednoargumentowych

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:

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.

Zobacz też

Przeciążenie operatora