Başlamak için muhtemelen const
bir nesnenin verilerini veya değiştirilemeyen bir işaretçiyi veya her ikisini birden yapmak için kullanılabileceğini biliyorsunuzdur .
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Ancak sözdizimini de kullanabilirsiniz:
Object const *obj; // same as const Object* obj;
Önemli görünen tek şey, yıldız işaretinin hangi tarafını const
anahtar kelimeyi koyduğunuzdur . Şahsen ben const
soldan sağa zihnimde daha iyi okuduğunu ama daha önce hangi sözdizimi geldiğini bulmak gibi veri değiştirilemez belirtmek için tür sol koymak tercih ederim.
Daha da önemlisi, const
veriyi belirtmek için neden iki doğru yol vardır ve varsa hangi durumda diğerini tercih edersiniz veya hangisine ihtiyacınız vardır?
Düzenle:
Demek ki, derleyicilerin bir şeyi nasıl yorumlamaları gerektiği standardı ben doğmadan çok önce hazırlanmışsa, bu keyfi bir karardı. Beri const
sanırım anahtar kelimenin sol ne uygulanır (varsayılan olarak?) Onlar hiçbir zarar ekleyerek orada olduğunu düşündüm "kısayolları" beyanı ile değiştirir gibi bir zamana kadar en azından başka şekillerde kelime ve tip eleme uygulamak * veya &
Ben de sanırım C de böyle oldu?
const
sonra örneğin, tip#define MAKE_CONST(T) T const
yerine#define MAKE_CONST(T) const T
, böyleceMAKE_CONST(int *)
doğru genişleyecekint * const
yerineconst int *
.