0Pricing
C++ Academy · Ders

noexcept Belirteci

Fırlatma yapmayan işlevleri işaretleyin

noexcept Belirteci, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

noexcept Ne Bildirir

noexcept belirteci, bir işlevin istisna oluşturmayacağına söz verir. İşlev yine de istisna oluşturursa program std::terminate çağrısı yapar.

#include <iostream>

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

int main() {
    std::cout << square(5) << "\n";
}

Neden Önemlidir?

Bir işlevin istisna oluşturamayacağını bilmek, derleyicinin ve kitaplığın iyileştirme yapmasını sağlar; örneğin kapsayıcı büyütülürken kopyalama yerine taşıma işlemlerinin seçilmesini mümkün kılar.

Taşıma İşlemleri noexcept Olmalıdır

std::vector, yeniden boyutlandırma sırasında taşıma kurucunuzu yalnızca noexcept ise kullanır; aksi durumda güvenlik için kopyalar. Bu nedenle taşımaları noexcept olarak işaretleyin.

struct Buffer {
    int* p;
    Buffer(Buffer&& o) noexcept : p(o.p) { o.p = nullptr; }
};

Yıkıcılar Varsayılan Olarak noexcept'tir

C++11'den beri yıkıcılar örtük olarak noexcept durumundadır. Bir istisnanın yıkıcıdan dışarı çıkmasına izin vermek programı sonlandırır.

Koşullu noexcept

noexcept(expr), sözü derleme zamanındaki bir boole değerine bağlı hâle getirir; bu, başka bir türün garantisini ileten şablonlarda kullanışlıdır.

template <class T>
void swapValues(T& a, T& b) noexcept(noexcept(T(std::move(a)))) {
    T tmp = std::move(a);
    a = std::move(b);
    b = std::move(tmp);
}

noexcept İşleciyle Sorgulama

İşleç olarak kullanılan noexcept(expr), ifade istisna oluşturmayacak şekilde bildirilmişse true üretir; şablonlarda oldukça kullanışlıdır.

#include <iostream>

int f() noexcept { return 1; }
int g() { return 2; }

int main() {
    std::cout << noexcept(f()) << " " << noexcept(g()) << "\n";  // 1 0
}

noexcept Türün Bir Parçasıdır

C++17'den beri noexcept, bir işlev işaretçisinin türünün parçasıdır; bu nedenle istisna oluşturabilen bir işlev, noexcept işaretçisine bağlanamaz.

Gereğinden Fazla Söz Vermeyin

Bir işlevi yalnızca istisna oluşturamayacağından eminseniz noexcept olarak işaretleyin. İhlal edilen yanlış bir söz tüm programın çökmesine neden olur.

İyi Adaylar

Takas işlemleri, taşımalar, yıkıcılar, basit erişim işlevleri ve aritmetik yardımcıları doğal noexcept işlevleridir.

noexcept ve throw()

Eski dinamik throw() belirtimi kullanımdan kaldırılmış ve kaldırılmıştır. Modern C++'ta bunun yerine noexcept kullanın.

Performans ve Güvenlik

noexcept hem amacı belgelendirir hem de yeniden boyutlandırma sırasında taşıma gibi iyileştirmeleri mümkün kılar; gerçek etkisi olan küçük bir belirtimdir.

Hızlı Kontrol

noexcept konusundaki anlayışınızı sınayın.

Özet

noexcept belirtecinin istisna olmayacağına söz verdiğini ve yeniden boyutlandırma sırasında taşıma gibi iyileştirmeleri mümkün kıldığını öğrendiniz. Taşımaları, takas işlemlerini ve yıkıcıları noexcept olarak işaretleyin, şablonlarda koşullu biçimleri kullanın ve asla gereğinden fazla söz vermeyin.

Sıkça Sorulan Sorular

“noexcept Belirteci” dersi ücretsiz mi?

Evet — “noexcept Belirteci” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“noexcept Belirteci” dersinde ne öğreneceğim?

Fırlatma yapmayan işlevleri işaretleyin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“noexcept Belirteci” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. try, catch, throw
  2. Özel Durum Güvenliği
  3. noexcept Belirteci
  4. Özel Özel Durum Türleri
← C++ Academy Sayfasına Dön