Odnosząc się do SO C++ FAQ When should static_cast, dynamic_cast and reinterpret_cast be used?.const_cast vs reinterpret_cast
const_cast służy do usuwania lub dodawania const do zmiennej i jest jedynym niezawodnym, zdefiniowanym i legalnym sposobem usunięcia stałej. reinterpret_cast służy do zmiany interpretacji typu.
Rozumiem w sposób rozsądny, dlaczego zmienna const powinna być rzucana do nie const tylko przy użyciu const_cast, ale nie mogę znaleźć uzasadnionego uzasadnienia problemów przy użyciu reinterpret_cast zamiast const_cast, aby dodać constness.
Rozumiem, że używanie reinterpret_cast do równomiernego dodawania nie jest normalne, ale czy byłoby to UB, czy potencjalna bomba czasowa do używania reinterpret_cast do dodania constness?
Powodem Byłem zmieszany tutaj jest ze względu na rachunku
Głównie, jedyną gwarancją można uzyskać z reinterpret_cast jest to, że jeśli rzucisz wynik z powrotem do oryginalnego typu, dostaniesz dokładnie ta sama wartość.
Więc jeśli dodam constness korzystając reinterpret_cast a jeśli reinterpret_cast wynik z powrotem do oryginalnego typu, powinno skutkować powrotem do oryginalnego typu i nie powinny być UB, ale który narusza fakt, że należy używać tylko const_cast aby wyjąć constness
na oddzielnej nocie standardowe gwarancje, które można dodać constness użyciu reinterpretacji case
5.2.10 reinterpretacji obsady (7) ...... Kiedy prvalue typu v "Wskaźnik do T1" jest konwertowany na typ "wskaźnik do cv T2", wynikiem jest static_cast (static_cast (V)), jeżeli oba T1 i T2 są typu standardowego układu (3.9) oraz wymagania centrowania T2 nie są bardziej restrykcyjne niż T1 ........
@clossvoters: Czy możesz odesłać mnie do duplikatu odpowiedzi na to pytanie? – Abhijit
'const_cast' obejmuje także dodanie/usunięcie' volatile'. –
@MikeDeSimone: Tak, zdecydowanie, ale mój obecny fokus to tylko constness – Abhijit