CodeBlanks Logo Icon CodeBlanks

constexpr fonksiyon

constexpr fonksiyon ile derleme zamanı hesap öğrenirsin.

constexpr fonksiyon

constexpr fonksiyon, derleme zamanında hesap yapabilen sıradan bir fonksiyondur. TMP'nin aksine şablon kullanmaz; constexpr anahtar kelimesi yeter. Örnek: constexpr int square(int x) { return x * x; }.

Sabir argümanla çağrılınca derleme zamanında, değişken argümanla çağrılınca çalışma zamanında çalışır. constexpr int s = square(5); ifadesi s = 25 sabitini derleme zamanında üretir. Bu, TMP'den çok daha okunaklıdır.

constexpr değişkene atama

constexpr fonksiyonun sonucunu yine constexpr bir değişkene atayabilirsin. Bu değişken derleme zamanı sabitidir; dizi boyutu veya şablon argümanı olarak kullanılabilir. Örnek: constexpr int area = square(6); ile area = 36 sabiti oluşur.

Bu sabitleri std::cout ile yazdırabilirsin. Derleyici square(6) çağrısını derleme zamanında 36 olarak çözer; çalıştırılabilir dosyaya 36 gömülür.

Uygulama constexpr square yaz

constexpr int square(int x) fonksiyonunu return x * x; gövdesiyle yaz. main içinde constexpr int area = square(6); tanımla ve std::cout << area; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// constexpr square fonksiyonunu buraya tanımla

int main() {
    // area tanımla ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

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

int main() {
    constexpr int area = square(6);
    std::cout << area;
    return 0;
}

Beklenen çıktı

36

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 constexpr int square(int x) ne sağlar?

main.cpp
constexpr int square(int x) { return x * x; }
  • Derleme zamanı hesabı Doğru cevap
  • Yalnızca makro
  • Sınıf üyesi olması
  • Yalnızca çalışma zamanı

Açıklama: constexpr, sabit argümanla derleme zamanı hesabı sağlar.

2 Dönüş ifadesini tamamla

Soru
constexpr int square(int x) { return x * ____; }
Cevap
constexpr int square(int x) { return x * x; }

Açıklama: return x * x; yazılır; kare için çarpan x'tir.

3 Çağrıyı sonucuna eşle

Kavram Anlamı
square(2) 4 döner
square(5) 25 döner
square(6) 36 döner
square(10) 100 döner

Uzman bölümündeki tüm dersler