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