constexpr fonksiyon
- C++ kursu
- Uzman
- Ders 8/47
- 5 dk
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
#include <iostream>
// constexpr square fonksiyonunu buraya tanımla
int main() {
// s sabitini tanımla ve yazdır
return 0;
}Örnek çözüm
#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
constexpr int square(int x) { return x * ____; }
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?
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 |