Untuk memulai, Anda mungkin tahu bahwa const
dapat 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 const
kata kunci. Secara pribadi saya lebih suka memakai const
di 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 const
data 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 const
diterapkan 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?
const
setelah jenis, misalnya#define MAKE_CONST(T) T const
bukannya#define MAKE_CONST(T) const T
sehinggaMAKE_CONST(int *)
akan benar berkembang menjadiint * const
bukanconst int *
.