CodeBlanks Logo Icon CodeBlanks

constexpr fonksiyon

constexpr fonksiyon yazmayı öğrenirsin.

constexpr fonksiyon

Bir constexpr fonksiyon, derleme zamanında değerlendirilebilen bir fonksiyondur. Çağrı tüm sabit ifade argümanlarıyla yapılırsa sonuç derleme zamanında hesaplanır. Örnek: constexpr int square(int x) { return x * x; }.

constexpr int s = square(5); çağrısı derleme zamanında 25 üretir. Ancak int n = readInput(); int r = square(n); çağrısı çalışma zamanında çalışır; constexpr burada yalnızca izin verir, zorunlu kılmaz. Esneklik constexpr'in gücüdür.

C++14 genişletmesi

C++14'ten itibaren constexpr fonksiyonlarda döngü, yerel değişken ve if kullanılabilir. C++11'de yalnızca tek bir return ifadesine izin vardı.

Örnek: constexpr int factorial(int n) { int r = 1; for (int i = 2; i <= n; ++i) r *= i; return r; }. Bu gövde C++14 ve sonrasında geçerlidir; derleyici sabit argümanla çağrınca döngüyü derleme zamanında açar.

Uygulama constexpr square fonksiyonu yaz

constexpr int square(int x) yaz; gövdesi return x * x;. main içinde constexpr int s = square(7); tanımla ve std::cout << s; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// constexpr square fonksiyonunu buraya tanımla

int main() {
    // s sabitini 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 s = square(7);
    std::cout << s;
    return 0;
}

Beklenen çıktı

49

Soru ve cevaplar

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

1 Fonksiyon gövdesini 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'in kendisidir.

2 Bir constexpr fonksiyon ne zaman derleme zamanında çalışır?

main.cpp
constexpr int square(int x) { return x * x; }
  • Argümanlar sabit ifadeyse Doğru cevap
  • Yalnızca inline ise
  • Her zaman
  • Sadece şablon içinde

Açıklama: Sabit argümanlarla derleme zamanında, değişken argümanlarla çalışma zamanında çalışır.

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

Kavram Anlamı
square(5) 25 döner
square(7) 49 döner
square(10) 100 döner
square(0) 0 döner

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