2010-11-16 14 views
33

Che cosa dice una regola di definizione in C++? L'unica presenza affidabile che riesco a trovare è in The Language Programming in C++, 3rd. ed., P. 9.2.3. Esiste una definizione ufficiale della regola eccetto quella?Che cos'è esattamente una regola di definizione in C++?

+0

fortemente correlati: [Fa ridefinire una funzione della libreria standard violare la regola una definizione?] (Http://stackoverflow.com/q/41670800/514235) – iammilind

risposta

30

la verità è nella norma (3.2 regola Una definizione):

Nessuna unità di traduzione deve contenere più di una definizione di qualsiasi variabile, funzione, tipo di classe, di enumerazione di tipo o modello.

[...]

Ogni programma deve contenere esattamente una definizione di ogni funzione non inline o oggetto che viene utilizzato in che programmare; nessuna diagnostica richiesta. La definizione può apparire esplicitamente nel programma, può essere trovata nello standard o in una libreria definita dall'utente, oppure (se appropriato) è implicitamente definita (vedere 12.1, 12.4 e 12.8). Una funzione in linea deve essere definita in ogni unità di traduzione in cui è utilizzato .

+3

Uh, è un po 'più di questo. Riguarda anche più unità di traduzione. Ed eccezioni alla regola (questo rende un po 'difficile parlarne!). Saluti, –

+2

In effetti, dovrei citare l'intera pagina, quindi sono andato per l'essenziale. – icecrime

Problemi correlati