Nilai Substitusi & Konstanta Sederhana
Kenapa const?
const menyatakan bahwa sebuah nilai tidak boleh diubah setelah diinisialisasi. Manfaat utamanya:
- Mencegah perubahan tak sengaja
Compiler akan menolak assignment yang mencoba memodifikasi data bertandaconst. - Membuka peluang optimisasi
Nilai yang diketahui tetap bisa dipakai compiler untuk melipatkan konstanta, menghilangkan cabang, atau menyimpan di memori yang lebih efisien. - Lebih aman dibanding
#define
consttetap bertipe (type-checked). Makro#definehanya substitusi teks sehingga rawan bug yang baru ketahuan saat runtime.
Bedah kode contoh
#include <iostream>
using namespace std;
const int i = 100; // Konstanta integral dengan nilai 100
const int j = i + 10; // Masih konstanta (110), dihitung saat kompilasi
long address = (long) & j; // Mengambil alamat j → memaksa j benar-benar disimpan (odr-used)
char buf [ j + 10 ]; // Ukuran array pakai ekspresi konstan (120), sah di C++
int main() {
cout << "type a character & CR:";
const char c = cin.get(); // Nilai yang dibaca lalu dikunci (tak bisa diubah)
const char c2 = c + 'a'; // Operasi aritmetika karakter, hasilnya juga konstan (setelah dihitung)
cout << c2;
// ...
}