Condividi tramite


Overload di operatori unari

Gli operatori unari producono un risultato da un singolo operando. È possibile definire gli overload di un set standard di operatori unari per lavorare sui tipi definiti dall'utente.

Operatori unari di overload

È possibile eseguire l'overload degli operatori unari seguenti sui tipi definiti dall'utente:

Dichiarazioni di overload dell'operatore unario

È possibile dichiarare operatori unari di overload come funzioni membro non statiche o come funzioni non membro. Le funzioni membro unarie di overload non accettano alcun argomento perché operano in modo implicito su this. Le funzioni non membri vengono dichiarate con un solo argomento. Quando vengono dichiarati entrambi i moduli, il compilatore segue le regole per la risoluzione dell'overload per determinare quale funzione utilizzare, se presente.

Le regole seguenti si applicano a tutti gli operatori unari di prefisso. Per dichiarare una funzione operatore unaria come funzione membro non statica, usare questo modulo di dichiarazione:

return-type operator op ();

In questo formato è return-type il tipo restituito ed op è uno degli operatori elencati nella tabella precedente.

Per dichiarare una funzione operatore unaria come funzione non membro, utilizzare questo formato di dichiarazione:

return-type operator op ( class-type );

In questo formato, return-type è il tipo restituito, op è uno degli operatori elencati nella tabella precedente ed class-type è il tipo di classe dell'argomento su cui operare.

Le forme di prefisso di ++ e -- accettano un argomento aggiuntivo int per distinguerle dai formati di prefisso. Per altre informazioni sui formati di prefisso e suffisso di ++ e --, vedere Overload degli operatori di incremento e decremento.

Annotazioni

Non esiste alcuna restrizione sui tipi restituiti degli operatori unari. Ad esempio, è opportuno che not logico (!) restituisca un bool valore, ma questo comportamento non viene applicato.

Vedere anche

Sovraccarico degli operatori