0Pricing
C++ Academy · Pelajaran

constexpr dan Waktu Kompilasi

Hitung nilai saat kompilasi

constexpr dan Waktu Kompilasi adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Arti constexpr

constexpr memberi tahu kompiler bahwa suatu nilai atau fungsi dapat dievaluasi pada waktu kompilasi, sehingga menghasilkan konstanta waktu kompilasi yang sebenarnya.

#include <iostream>

int main() {
    constexpr int size = 4 * 4;   // computed at compile time
    int arr[size];
    std::cout << sizeof(arr) / sizeof(int) << "\n";
}

Fungsi constexpr

Fungsi constexpr dapat dijalankan saat kompilasi jika diberikan argumen konstan, dan saat program berjalan jika tidak.

#include <iostream>

constexpr int square(int x) { return x * x; }

int main() {
    constexpr int s = square(5);   // compile time
    int n = 6;
    std::cout << s << " " << square(n) << "\n";  // second at runtime
}

Konstanta Waktu Kompilasi dalam Larik

Karena nilai constexpr diketahui saat kompilasi, nilai tersebut dapat menentukan ukuran larik dan digunakan sebagai argumen templat.

constexpr vs const

const berarti "tidak dapat diubah"; constexpr berarti "diketahui saat kompilasi". Setiap constexpr secara implisit bersifat const, tetapi tidak setiap const merupakan constexpr.

#include <iostream>

int main() {
    int x;
    std::cin >> x;
    const int a = x;        // const but runtime value
    constexpr int b = 10;   // compile-time constant
    std::cout << b << "\n";
}

constexpr Rekursif

Fungsi constexpr dapat memanggil dirinya sendiri secara rekursif, sehingga kompiler dapat menghitung hal-hal seperti faktorial sebelum program dijalankan.

#include <iostream>

constexpr long factorial(int n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}

int main() {
    constexpr long f = factorial(5);  // 120 at compile time
    std::cout << f << "\n";
}

constexpr yang Lebih Fleksibel dalam C++ Modern

Sejak C++14, fungsi constexpr dapat memiliki perulangan, variabel lokal, dan percabangan, sehingga Anda dapat menghitung konstanta kompleks saat kompilasi.

#include <iostream>

constexpr int sumTo(int n) {
    int total = 0;
    for (int i = 1; i <= n; ++i) total += i;
    return total;
}

int main() {
    constexpr int s = sumTo(100);
    std::cout << s << "\n";
}

Variabel constexpr Harus Diinisialisasi saat Kompilasi

Variabel yang dideklarasikan sebagai constexpr harus memiliki penginisialisasi yang dapat dievaluasi saat kompilasi, atau program tidak akan berhasil dikompilasi.

Manfaat Perhitungan saat Kompilasi

Melakukan perhitungan saat kompilasi berarti tidak ada biaya saat program berjalan, nilai dapat digunakan dalam konteks konstan, dan kesalahan dapat dideteksi lebih awal.

constexpr dan Templat

Nilai constexpr berpadu secara alami dengan templat dan std::array, yang ukuran dan parameternya harus berupa konstanta waktu kompilasi.

Saat Beralih ke Waktu Berjalan

Jika fungsi constexpr menerima argumen non-konstan, fungsi tersebut cukup dijalankan saat program berjalan seperti fungsi biasa—tanpa kesalahan.

Utamakan constexpr untuk Konstanta

Gunakan constexpr untuk konstanta sejati (ukuran, perhitungan matematika, dan tabel pencarian). Fitur ini lebih ekspresif daripada const dan memberikan jaminan saat kompilasi.

Pemeriksaan Singkat

Uji pemahaman Anda tentang constexpr.

Rangkuman

Anda telah mempelajari bahwa constexpr memungkinkan evaluasi variabel dan fungsi pada waktu kompilasi, berbeda dari const (yang hanya melarang perubahan), mendukung perulangan dan rekursi dalam C++ modern, serta beralih ke waktu berjalan jika menerima input non-konstan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “constexpr dan Waktu Kompilasi” gratis?

Ya — teks lengkap “constexpr dan Waktu Kompilasi” 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 “constexpr dan Waktu Kompilasi”?

Hitung nilai saat kompilasi 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 3 dari 4.

Berapa lama pelajaran “constexpr dan Waktu Kompilasi” 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

  1. Variabel dan Parameter const
  2. Fungsi Anggota const
  3. constexpr dan Waktu Kompilasi
  4. consteval dan constinit
← Kembali ke C++ Academy