Come da soggetto. Ho visto questa terminologia in una domanda che ho chiesto di recente e apparentemente è un termine ben definito, ma non riesco a trovare nulla su StackOverflow.Cosa significa "cv-non qualificato" in C++?
risposta
Esistono tipi fondamentali e tipi di composti. I tipi fondamentali sono i tipi aritmetici, void
e std::nullptr_t
. I tipi composti sono matrici, funzioni, puntatori, riferimenti, classi, unioni, enumerazioni e puntatori a membri non statici.
A cv-non qualificato tipo è uno di questi tipi.
Per qualsiasi tipo cv-qualificato, vi sono tre corrispondendo cv qualificato tipi:
- const qualificati - con il
const
cv-qualificazione - volatili qualificato - con lo
volatile
qualificatore di cv - qualifica const-volatile - con entrambi i
const
evolatile
qualifiche Cv
Nota, tuttavia, che i qualificatori di cv applicati a un tipo di matrice si applicano effettivamente ai suoi elementi.
I tipi cv-qualificati e cv-non qualificati sono distinti. Quello è int
è un tipo distinto da const int
.
wow, non riesco a capire .. perché è denominato 'cv-non qualificato'? sarebbe stato meglio se prima ci avessi detto "cosa significa" prima di "ciò che è". ovviamente ora so cv è per const e volatile .. –
Un tipo è "cv-non qualificato" se non ha qualificatori di cv. Un cv-qualifer è o const
o volatile
.
Generalmente significa "lo stesso tipo, ma con qualsiasi qualificatore cv rimosso", quindi (ad esempio) la versione cv-non qualificata di void volatile * const x
sarebbe void *x
.
Si noti che, tuttavia, sto rimuovendo i qualificatori di cv sia dal puntatore stesso sia da a cosa punta. Nella maggior parte dei casi, cv-unqualified
si riferirà solo a un oggetto alla volta, quindi una versione cv -qualificata del puntatore stesso sarebbe ancora void volatile *x
, mentre una versione non cagliata di ciò a cui punta è void *const x
.
cv corrisponde a const
e volatile
(e più raramente a mutable
), due attributi che qualificano un tipo. Puoi manipolarli con std::remove_const
e simili in C++ 11.
L'eccellente sito cppreference gives you more informazioni.
Per rispondere alla tua domanda, un tipo cv-non qualificato non ha o è stato rimosso dai suoi qualificatori di cv. Ad esempio, int
è la parte cv-non qualificata di const volatile int
.
std::remove_cv<T>::type
è la parte cv -qualificata di T
.
l'ho fatto, ma non è qui. Lo voglio qui –
Ma lo è! [Questa domanda] (http: // StackOverflow.it/questions/3610943/correlation-between-specifier-and-qualifier), ad esempio, è sullo stesso argomento ma il poster mostra che ha svolto alcune ricerche per comprendere alcune nozioni di base ma è confuso da alcuni punti specifici. Quale sono io credo lo spirito di questo sito. – Antoine
Non lo è. Il titolo della domanda non trasmette il suo contenuto. Voglio che chiunque abbia la stessa domanda che ho avuto su google e chiedere "cosa significa cv non qualificato" e arrivare a questa domanda, dove è chiaramente spiegato. Da un lato, penso che questo comportamento piranha della community di stackoverflow rispetto a domande ragionevoli ma "percepite facili" sia davvero antipatico, e se esistesse un'alternativa, sarei già passato. Calm the dannatamente down persone –
cv-qualificato tipo è un tipo che non è stato specificato da una CV-qualificazioni. Questi definiscono due proprietà di base di un tipo: constness e volatilità. Vedere C++ 03 3.9.3 CV-qualificazioni §1:
Un tipo di cui al 3.9.1 e 3.9.2 è un tipo cv-qualificato. Ogni tipo che è un tipo di oggetto completo o incompleto cv-qualificato o è nullo (3.9) ha tre versioni cv qualificati corrispondenti del suo tipo:
- un const qualificato versione,
- un volatili qualificata versione e
- a versione const-volatile.
Il termine tipo di oggetto (1.8) include i qualificatori di cv specificati al momento della creazione dell'oggetto.
La presenza di un identificatore
const
in un decl-specificatore-seq dichiara un oggetto di const qualificati tipo oggetto; tale oggetto è chiamatoconst object
.La presenza di un identificatore
volatile
in un decl-specificatore-seq dichiara un oggetto di volatilequalified tipo oggetto; tale oggetto è chiamatovolatile object
.La presenza di entrambi CV-qualificazioni in declspecifier-seq dichiara un oggetto di const volatile qualificato tipo oggetto; tale oggetto è chiamato
const volatile object
.
- 1. Cosa significa "qualificato questo" in java?
- 2. cosa significa "@" significa in C#
- 3. Cosa significa/*! */Significa in C#?
- 4. Cosa significa: :: significa in C++?
- 5. Cosa significa "??" significa in C#?
- 6. Che cosa significa "qualificato" nell'istruzione "Import data Data.List"?
- 7. Cosa significa [,] in C#?
- 8. Cosa significa :: * in C++?
- 9. cosa significa ** in C
- 10. Cosa significa "&" in C++?
- 11. Che cosa significa "[questo]" significa in C++
- 12. Che cosa significa?. significa in C#?
- 13. Cosa significa "classe:" in C++?
- 14. Cosa significa "() =>" in C#?
- 15. Cosa significa (void **) in C?
- 16. Cosa significa "?" fare in C++?
- 17. Cosa significa 0u in C#?
- 18. Shellcode in C - Cosa significa?
- 19. Cosa significa the :: in C++?
- 20. Cosa significa -> in C++?
- 21. Cosa significa "^" in Objective-C
- 22. Cosa significa cmd/C?
- 23. Cosa significa = ~ significa in Perl
- 24. Cosa significa questa istruzione C?
- 25. C - Cosa significa questa linea?
- 26. Cosa significa^dopo un tipo significa in C++?
- 27. In C# cosa significa 'dove T: class' significa?
- 28. cosa significa in c int a: 16 ;?
- 29. Cosa significa il suffisso "_t" in C?
- 30. Cosa significa scrivere su stdout in C?
@Andrew: solo forum scadenti. Aggiungiamo lo stackoverflow. –
@LihO: da quello che so su StackOverflow, il copypaste non è il metodo preferito per rispondere a una domanda. Normalmente comporta una serie estremamente dettagliata di risposte con riferimenti molto specifici alle specifiche –
@StefanoBorini: [secondo risultato] (http://en.cppreference.com/w/cpp/language/cv) da googling cv-qualifiers è chiaro ed esaustivo. Non è affatto un forum schifoso. – Antoine