Confrontare i puntatori utilizzando gli operatori relazionali
Quando due puntatori agli oggetti dello stesso tipo confrontati, il risultato è determinato dalla posizione degli oggetti allo spazio degli indirizzi del programma.I puntatori possono anche essere confrontati a un'espressione costante che restituisce 0 o a un puntatore di tipo void *.Se un confronto del puntatore viene fatto riferimento a un puntatore di tipo void *, altro puntatore viene convertito in modo implicito nel tipo void *.Quindi il confronto viene eseguito.
Due puntatori di diversi tipi non possono essere confrontati a meno che:
Un tipo è un tipo di classe derivato da altro tipo.
Almeno uno dei puntatori in modo esplicito viene convertito (cast) per immettere void *.(Altro puntatore viene convertito in modo implicito nel tipo void * per la conversione.)
Due puntatori dello stesso tipo che puntano allo stesso oggetto sono garantiti per confrontare equivalenti.Se due puntatori ai membri non statici di un oggetto vengono confrontati, è necessario rispettare le seguenti regole:
Se il tipo di classe non è un'unione e se i due membri non sono separati da identificatore di accesso, ad esempio pubblico, protetto, o privato, il puntatore a membro dichiarato ultima compilazione confronta maggiore del puntatore a membro dichiarato in precedenza.(Per informazioni su identificatore di accesso, vedere la sezione relativa alla sintassi in identificatori di accesso).
Se i due membri sono separati da identificatore di accesso, i risultati vengono definiti.
Se il tipo di classe è un'unione, i puntatori ai membri dati diversi in tale unione confronto equivalenti.
Se un punto di due puntatori agli elementi della stessa matrice o a uno oltre la fine della matrice, il puntatore all'oggetto con il indice massimo confronta superiore.Il confronto dei puntatori è valido garantita solo quando i puntatori fanno riferimento a oggetti nella stessa matrice o nella posizione un'esperienza la fine della matrice.