emin2045

Unreal MVP
23 Haz 2020
169
1
75
28
Bazı fonksiyonların sonuna neden const koyuyoruz? Hangi durumlar için const koyalım yada hangi durumlar için koymamalıyız?

-----------------Çözüldü

Bknz. 2. yorum.
 
emin2045' Alıntı:
Bazı fonksiyonların sonuna neden const koyuyoruz? Hangi durumlar için const koyalım yada hangi durumlar için koymamalıyız?

Const diye deklare edilen  metotları şöyle düşün: Metota const koymak "Ben söz  veriyorum bu metot hiç bir sınıf değişkenini-verisini değiştirmeyecek" demektir. Eğer bu metotu sen yazıyorsan artık hiç bir class değişkenini değerini burada değiştiremezsin. Başkasının  yazdığı bir metotta bunu  görüyorsan anlarsın ki bu metotta hiç bir değer değişmeyecek. 
Eğer   yazdığımız metot GetAge() CalculateDistance() ShowWidget() vb. bir herhangi bir deger değiştirmesi gerekmeyen birsey se const  u sona koy. Ama eğer metot SetAge() DistanceExtend() SetWidgetVisibility() vb. bir şey değiştirmesi gereken metotsa const koyma.
Peki neden kendi kendimizi const ile kısıtlıyoruz. Çünkü yazdığımız metot uzun olabilir. Bir yerlerde bir class member değişkenini yanlışlık la dolaylı  ya da unutarak direk değiştirmeye çalışmışsak derleyici alarm verir ve "Bak söz  vermiştin ama burda şunu değiştirdin " diye bize hatayı gösterir. Bizde verdiğimiz sözde duracaksak yazdığımız kodu değiştiririz. Eğer başta const koymakta hata ettiğimizi düşünürsek const u sileriz.
  Bu aslında en çok başkasının kodunu okurken anlamaya çalışırken faydalı. Mesela ue4 engine kodunda birseyin yüksekliğini değiştirecek bir metotu class içinde ararken sonunda const olanları baştan direk bakmadan geçebilirsin