10 Aralık 2008, ÇARŞAMBA
Const_cast güvenli mi?
Const_cast ile ilgili pek bilgi bulamıyorum. Bulabildiğim tek bilgi Yığın Taşması ():
Const_cast<>()/değişken. sabit(ness) (veya değişken-lik) eklemek veya kaldırmak için kullanılır
Bu beni geriyor. Kullanarak bir const_cast beklenmeyen davranışlara neden olabilir? Eğer öyleyse, ne?
Alternatif olarak, ne zaman const_cast kullanmak için tamam mı?
CEVAP
10 Aralık 2008, ÇARŞAMBA
const_cast
başlangıçta olmayanconst
bir değişken döküm ancak bu kadar güvenli. Örneğin, bir fonksiyon bir parametre alır bir const char *
ve pas bir değiştirilebilir char *
, kasa const_cast
Bu parametre, geri char *
ve değiştir. Eğer orijinal değişken aslında, eğer const
const_cast
kullanarak tanımsız davranışlara neden olur.
void func(const char *param, size_t sz, bool modify)
{
if(modify)
strncpy(const_cast<char *>(param), sz, "new string");
printf("param: %s\n", param);
}
...
char buffer[16];
const char *unmodifiable = "string constant";
func(buffer, sizeof(buffer), true); // OK
func(unmodifiable, strlen(unmodifiable), false); // OK
func(unmodifiable, strlen(unmodifiable), true); // UNDEFINED BEHAVIOR
Bunu Paylaş:
Gıt http - güvenli kimlik bilgilerini ...
Güvenli karma ve PHP şifreler için tuz...
PHP Yapılandırma: güvenli sistem'...
BigDecimal dönüşüm için güvenli Dize...
Non-senkronize statik yöntemler parçac...