Regole per identificatori in C++ sono:
- Non può iniziare con un numero
- può essere composto da lettere, numeri, sottolineano, i nomi dei personaggi universali e implementazione definito caratteri
- Non può essere un keyword.
Le sezioni del C++ draft standard che copre questo sono 2.11
identificatori che include la seguente grammatica:
identifier:
identifier-nondigit <- Can only start with a non-digit
identifier identifier-nondigit <- Next two rules allows for subsequent
identifier digit <- characters to be those outlined in 2 above
identifier-nondigit:
nondigit <- a-z, A-Z and _
universal-character-name
other implementation-defined characters
[...]
e 2.12
Parole spiega tutte le identificatore riservato per l'uso come parole chiave.
Infine, i seguenti nomi sono riservati:
- nomi che contengono una doppia sottolineatura
__
, o iniziare con un trattino basso seguito da una lettera maiuscola (come _Apple
) in qualsiasi ambito,
- Nomi che iniziano con un carattere di sottolineatura nello spazio dei nomi globale (come
_apple
nello spazio dei nomi globale) sono riservati.
La sezione che si occupa di questo nel progetto di norma è 17.6.4.3.2
. Siamo in grado di trovare una spiegazione razionale per il motivo per cui queste sono riservati da Rationale for International Standard—Programming Languages—C che dice:
[...] Questo dà uno spazio dei nomi per la scrittura delle numerose macro e funzioni dietro quinte del non-esterni una biblioteca ha bisogno di fare il suo lavoro correttamente [...]
In C++ vale questo anche per name mangling come questo example spettacoli.
Note
- 1.caratteri universali ammessi
I personaggi universali che sono ammessi è coperto in Annex E.1
:
E.1 intervalli di caratteri consentiti [charname.allowed]
00A8, 00AA, 00AD,
00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF
0100-167F, 1681-180D, 180F-1FFF 200B-200D, 202A-202E, 203F-2040, 2054,
2060-206F 2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80 -2FFF
3004-3007, 3021-302F, 3031-303F
3040-D7FF F900-FD3D, FD40-FDCF,
FDF0-FE44, FE47-FFFD
10000-1FFFD , 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD
potresti avere le cifre numeriche in fondo al nome della classe ... –
Rinomina in Array, dato che è di default .. una dimensione. Quindi se hai una 2 dimensioni, chiamala Array2D. – Rapptz