consteval dan constinit
Kata kunci waktu kompilasi modern
consteval dan constinit adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Di Luar constexpr
C++20 menambahkan dua kata kunci yang memperkuat pemrograman waktu kompilasi: consteval untuk fungsi yang dijamin dievaluasi saat kompilasi dan constinit untuk inisialisasi yang dijamin dilakukan saat kompilasi.
consteval: Fungsi Segera
Fungsi consteval harus dievaluasi saat kompilasi. Tidak seperti constexpr, fungsi ini tidak pernah dapat dijalankan saat program berjalan.
consteval int cube(int x) {
return x * x * x;
}
int main() {
constexpr int c = cube(3); // OK: compile time
return c;
}consteval Menolak Pemanggilan saat Berjalan
Memanggil fungsi consteval dengan nilai saat program berjalan merupakan kesalahan kompilasi—jaminan tersebut ditegakkan.
consteval int cube(int x) { return x * x * x; }
int main() {
int n = 4;
// int bad = cube(n); // ERROR: n is not a constant
return cube(2);
}Mengapa consteval?
Gunakan fitur ini ketika suatu perhitungan tidak masuk akal dilakukan saat program berjalan—misalnya, untuk membuat tabel konstan atau memvalidasi literal saat kompilasi.
constexpr vs consteval
Fungsi constexpr dapat dijalankan saat kompilasi; fungsi consteval selalu dijalankan saat kompilasi. Pilih consteval untuk melarang penggunaan saat program berjalan secara tidak disengaja.
constinit: Inisialisasi Statis Terjamin
constinit menjamin bahwa variabel statis atau lokal-utas diinisialisasi saat kompilasi, sehingga menghilangkan kekacauan urutan inisialisasi statis.
constinit int globalCount = 10; // initialized at compile time
int main() {
return globalCount;
}constinit Bukan const
Tidak seperti constexpr, variabel constinit masih dapat diubah setelah inisialisasi saat kompilasi—kata kunci ini hanya membatasi cara variabel tersebut diinisialisasi.
constinit int counter = 0;
int main() {
counter = 5; // OK: constinit allows mutation
return counter;
}Mengatasi Kekacauan Urutan Inisialisasi
Untuk variabel statis non-lokal di berbagai unit terjemahan, constinit memaksa inisialisasi statis (saat kompilasi), sehingga nilainya siap sebelum inisialisasi dinamis apa pun berjalan.
Perbandingan Tiga Kata Kunci
constexpr: dapat dievaluasi saat kompilasi dan bersifat const. consteval: harus dievaluasi saat kompilasi (untuk fungsi). constinit: memaksa inisialisasi saat kompilasi dan tetap dapat diubah.
Dukungan Kompiler
Fitur-fitur ini tersedia di C++20. Kompilasikan dengan -std=c++20 (atau yang lebih baru) pada GCC/Clang, atau /std:c++20 pada MSVC.
Memilih Alat yang Tepat
Gunakan consteval untuk memaksa perhitungan saat kompilasi, dan constinit untuk membuat inisialisasi statis menjadi deterministik—keduanya membuat C++ waktu kompilasi lebih aman.
Pemeriksaan Singkat
Uji pemahaman Anda tentang consteval dan constinit.
Rangkuman
Anda telah mempelajari kata kunci C++20 consteval (fungsi yang harus dijalankan saat kompilasi) dan constinit (inisialisasi saat kompilasi yang dijamin untuk variabel statis, tetapi tetap dapat diubah). Bersama constexpr, keduanya memberikan kendali yang tepat atas evaluasi saat kompilasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “consteval dan constinit” gratis?
Ya — teks lengkap “consteval dan constinit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “consteval dan constinit”?
Kata kunci waktu kompilasi modern Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “consteval dan constinit” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Variabel dan Parameter const
- Fungsi Anggota const
- constexpr dan Waktu Kompilasi
- consteval dan constinit