Untuk memulai, Anda mungkin tahu bahwa constdapat digunakan untuk membuat data objek atau pointer tidak dapat dimodifikasi atau keduanya.
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Namun Anda juga dapat menggunakan sintaks:
Object const *obj; // same as const Object* obj;
Satu-satunya hal yang tampaknya penting adalah sisi asterisk mana yang Anda masukkan constkata kunci. Secara pribadi saya lebih suka memakai constdi sebelah kiri jenis untuk menentukan data itu tidak dapat dimodifikasi karena saya menemukan itu membaca lebih baik dalam pola pikir kiri-ke-kanan saya tetapi sintaks mana yang lebih dulu?
Lebih penting lagi mengapa ada dua cara yang benar untuk menentukan constdata dan dalam situasi apa Anda lebih suka atau membutuhkan satu dari yang lain jika ada?
Edit:
Jadi sepertinya ini adalah keputusan yang sewenang-wenang ketika standar untuk bagaimana kompiler harus menafsirkan hal-hal yang dirancang jauh sebelum saya lahir. Karena constditerapkan pada apa yang ada di sebelah kiri kata kunci (secara default?) Saya kira mereka pikir tidak ada salahnya menambahkan "pintasan" untuk menerapkan kata kunci dan mengetikkan kualifikasi dengan cara lain setidaknya sampai saat deklarasi berubah oleh parsing * atau & ...
Ini adalah kasus di C juga maka saya berasumsi?
constsetelah jenis, misalnya#define MAKE_CONST(T) T constbukannya#define MAKE_CONST(T) const TsehinggaMAKE_CONST(int *)akan benar berkembang menjadiint * constbukanconst int *.