olarak değiştiriyorum Aşağıdaki gibi int const olarak tanımlanan bir değişkenin değerini değiştirmeye çalışıyorum.const değişkeni değerini C++
const int w = 10;
int* wp = const_cast <int*> (&w);
*wp = 20;
aynı bellek konumuna işaret eden her iki ağırlık wp gibi gösterir se değiştirebilir ve hatta atama sonra 10 idi yoktu ağırlık değeri. Ben w doesn ait
const int i = 10;
değeri gibi const yapmak i beyanı değiştirirseniz
int i = 10;
const int w = i;
ilan ederken aşağıda tanımlanan Ama eğer, değişime ağırlık değeri am güçlü değişme. İlk durumda
, değerini nasıl oluyor w, değişmedi rağmenFarkı [onların adreslerini yazdırırken alıyorum benim izlenim oldu] aynı bellek konumu w ve wp noktası Derleyiciye her iki durumda da farklı davranıyor mu?
Tanımlanma şekline bakılmaksızın, w'nin sıkışmadığından emin olmanın bir yolu var mı? Bir değişkenin tanımını tanımlandığı gibi almayan "
Bir nesne başlangıçta 'const' olarak oluşturulduysa, const_cast' bunu non-'const' olarak yapılamaz (yapmamalısınız); Bu tanımlanmamış bir davranış. Eğer bir nesne başlangıçta "disketsiz" olarak yaratılmışsa, istediğiniz gibi ileri geri alabilirsiniz. –
Bazı uygulamalarda, 'const 'nesnesine yazma işlemi, nesnenin içeriği salt okunur bir bölümde yer alıyorsa (örneğin,' .data' yerine '.data' yerine,' kavramayan verilerin olmadığı durumlarda) programınızı kilitleyebilir.) oturur. –
Kimse bariz soruyu sormamış görünüyor - eğer değeri değiştirmek istiyorsanız, neden değişkeni “const” olarak işaretliyorsunuz? –