Başlamak için muhtemelen constbir 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ı constanahtar kelimeyi koyduğunuzdur . Şahsen ben constsoldan 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, constveriyi 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 constsanı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?
constsonra örneğin, tip#define MAKE_CONST(T) T constyerine#define MAKE_CONST(T) const T, böyleceMAKE_CONST(int *)doğru genişleyecekint * constyerineconst int *.