const_cast conversion
Da cppreference.com.
![]() |
Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.
La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Converte tra i tipi con diverse cv-qualificazione.
Original:
Converts between types with different cv-qualification.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica] Sintassi
const_cast < new_type > ( expression )
|
|||||||||
Restituisce un valore di tipo
new_type
.Original:
Returns a value of type
new_type
.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Spiegazione
Solo le seguenti conversioni può essere fatto con const_cast. In particolare, solo const_cast può essere utilizzato per buttar via (rimuovere) constness o volatilità.
Original:
Only the following conversions can be done with const_cast. In particular, only const_cast may be used to cast away (remove) constness or volatility.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
1)
Due puntatori eventualmente multilivello stesso tipo possono essere convertiti tra loro, indipendentemente CV-qualificazione ad ogni livello.
Original:
Two possibly multilevel pointers to the same type may be converted between each other, regardless of cv-qualifiers at each level.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2)
lvalue di qualsiasi tipo
T
può essere convertito in un riferimento lvalue o rvalue al T
stesso tipo, più o meno cv qualificati. Allo stesso modo, un rvalue può essere convertito in un più o meno cv qualificati riferimento rvalue.Original:
lvalue of any type
T
may be converted to a lvalue or rvalue reference to the same type T
, more or less cv-qualified. Likewise, an rvalue may be converted to a more or less cv-qualified rvalue reference.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
3)
Le stesse regole si applicano ai puntatori eventualmente multilivello ai membri di dati.
Original:
Same rules apply to possibly multilevel pointers to data members.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
4)
valore di puntatore nullo può essere convertito nel valore di puntatore nullo new_type
Original:
null pointer value may be converted to the null pointer value of new_type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Come con tutti espressioni cast, il risultato è:
Original:
As with all cast expressions, the result is:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- un lvalue se new_type è un tipo di riferimento o un riferimento lvalue rvalue un funzionamento tipo;Original:an lvalue if new_type is an lvalue reference type or an rvalue reference to function type;The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - un xValue se new_type è un riferimento rvalue per tipo di oggetto;Original:an xvalue if new_type is an rvalue reference to object type;The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - un prvalue altrimenti.Original:a prvalue otherwise.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Note
Puntatori a funzioni e puntatori a funzioni membro non sono soggetti a const_cast
Original:
Pointers to functions and pointers to member functions are not subject to const_cast
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Anche se const_cast può rimuovere constness da qualsiasi puntatore o un riferimento, utilizzando il puntatore risultante o il riferimento a scrivere a un oggetto che è stato dichiarato const richiama un comportamento indefinito.
Original:
Even though const_cast may remove constness from any pointer or reference, using the resulting pointer or reference to write to an object that was declared const invokes undefined behavior.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Parole chiave
[modifica] Esempio
#include <iostream> struct type { type() :i(3) {} void m1(int v) const { // this->i = v; // compile error: this is a pointer to const const_cast<type*>(this)->i = v; // OK } int i; }; int main() { int i = 3; // i is not declared const const int& cref_i = i; const_cast<int&>(cref_i) = 4; // OK: modifies i std::cout << "i = " << i << '\n'; type t; t.m1(4); std::cout << "type::i = " << t.i << '\n'; const int j = 3; // j is declared const int* pj = const_cast<int*>(&j); *pj = 4; // undefined behavior! void (type::*mfp)(int) const = &type::m1; // pointer to member function // const_cast<void(type::*)(int)>(mfp); // compiler error: const_cast does not // work on function pointers }
Output:
i = 4 type::i = 4