const_cast conversion - 1

10:52

Öncelikle const_cast tür dönüştürme işleminde const bir değiskeni const' luktan çıkartıp değeri değiştirebilir hale getirmek icin kullanılmaz. Aşağıdaki örnek; en temel akla gelen const kullanım senaryosuna örnektir.


Ama kodumuz beklenen biçimde sonuçlanmayacak ve ival değişkeninin değeri sabit kalacaktır.

Gerçek kullanım senaryolarından ilki ise kötü bir tasarim biçimi olan const correctness' a uymayan fonksiyon tasarımında fonksiyon parametresi const olması gerekirken const yapılmayan bir fonksiyon için fonksiyon çağrısı için kullanılır.


İkinci kullanım biçimi ise sınıfın this pointer değerini const' luktan çıkartarak const olmayan sınıfın üyelerini değiştirme imkanıdır. Buna ilişkin örnek aşağıdaki gibidir:


Sınıfın setNumber() fonksiyonu const olduğu için this pointer değeri const olacak ve aşağıdaki gibi tür dönüşümü olmadan yapılan değer atama işlemi derleme hatasına neden olacaktır.


Sınıfın const üye fonksiyonu içinde atama işlemi yapılamayacağına ilişkin derleme hatası aşağıdaki gibidir: