Dalam sains komputer, kebetulan const ialah bentuk kebetulan atur cara yang berurusan dengan kebetulan cara pengisytiharan objek sebagai boleh ubah atau tak boleh ubah. Istilah ini paling banyak digunakan dalam konteks C atau C++, dan namanya diambil sempena kata kunci const dalam bahasa-bahasa tadi.

Idea ke-const-an tidak bermaksud bahawa pemboleh ubah—kerana ia tersimpan dalam ingatan komputer—tidak boleh ditulis. Sebaliknya, ke-const-an ialah suatu binaan masa kompil yang menandakan apa yang patut seseorang pengaturcara buat, tidak semestinya apa yang mereka boleh buat. Pun begitu, perlu diingat bahawa dalam kes data pratakrif (misalnya rentetan harafiah const char *), const C selalunya tidak boleh ditulis.

Sebagai tambahan, sesebuah kaedah boleh diisytiharkan sebagai const. Dalam perkara ini, penuding 'this' dalam sesebuah kaedah sebegini adalah berjenis const ThisClass* const bukan ThisClass* const. Maksudnya, kaedah bukan const bagi objek ini tidak boleh dipanggil daripada kaedah sebegini, pembolehubah-pembolehubah ahlinya juga tidak boleh diubah. Dalam C++, sesebuah pemboleh ubah ahli boleh diisytiharkan sebagai mutable, menandakan bahawa kekangan ini tiada kesan keatasnya. Ini berguna dalam kes-kes seperti dengan peng-cache-an, penghitungan rujukan, dan penyerentakan data. Dalam kes-kes ini, makna logik (keadaan atau state) bagi objek tidak bertukar, namun objek terbabit tidak secara fizikalnya malar kerana pewakilan bitnya mungkin berubah.

Sintaks C++ sunting

Semua jenis data dalam C++, termasuk yang ditakrifkan pengguna, boleh diisytiharkan const, dan mengharuskan kesemua objek harus diisytiharkan begitu melainkan ia perlu diubah. Penggunaan const yang proaktif ini membuatkan nilai menjadi lebih senang difahami dan dijejaki[1] lantas menjadikan kod lebih mudah dibaca dan difahami seterusnya menjadikan bekerja dalam satu pasukan dan menyelenggara kod lebih mudah kerana ia menyampaikan maklukmat tentang kegunaan sesuatu nilai.

Jenis data ringkas sunting

Bagi jenis data bukan penuding yang ringkas, pemeri const dipakai secara terus. Ia boleh diletakkan pada mana-mana sisi jenisnya atas sebab sejarah (yakni const char foo = 'a'; bersamaan dengan char const foo = 'a';). Dalam beberapa pelaksanaan, amaran akan dijanakan jika menggunakan const pada kedua belah sisi jenisnya (misalnya, const char const), tapi bukan ralat.

Rujukan sunting

  1. ^ Herb Sutter and Andrei Alexandrescu (2005). C++ Coding Standards. p. 30. Boston: Addison Wesley. ISBN 0-321-11358-6