0Pricing
C++ Academy · Ders

optional ile Yokluğu Temsil Etme

Null işaretçilerden kaçının

optional ile Yokluğu Temsil Etme, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. 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.

Null Sorunu

"Değer yok" anlamında -1 gibi bir belirteç veya null gösterici döndürmek kırılgandır ve kolayca yanlış kullanılabilir. std::optional<T>, "bir değer veya hiçbir şey" durumunu açıkça temsil eder. <optional> ekleyin.

#include <iostream>
#include <optional>
int main() {
    std::optional<int> maybe = 42;
    std::cout << *maybe << "\n";
}

Boş Bir İsteğe Bağlı Değer

Bir isteğe bağlı değeri varsayılan olarak oluşturmak veya ona std::nullopt atamak, hiçbir değer tutmayan boş bir isteğe bağlı değer oluşturur.

#include <iostream>
#include <optional>
int main() {
    std::optional<int> empty;
    std::optional<int> also = std::nullopt;
    std::cout << empty.has_value() << " " << also.has_value() << "\n";
}

Değer Denetimi

İçinde bir şey olup olmadığını denetlemek için has_value() çağırın veya isteğe bağlı değeri doğrudan bir mantıksal bağlamda kullanın.

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 5;
    if (o) std::cout << "has value\n";
    if (o.has_value()) std::cout << "yes\n";
}

Dönüş Türü Olarak İsteğe Bağlı Değer

Sonuç üretmesi başarısız olabilecek işlevler için bu yapı mükemmel bir seçimdir. Başarıda değeri, başarısızlıkta std::nullopt döndürün.

#include <iostream>
#include <optional>
std::optional<int> half(int n) {
    if (n % 2 == 0) return n / 2;
    return std::nullopt;
}
int main() {
    auto r = half(10);
    if (r) std::cout << *r << "\n";
}

Değeri Okuma

Bir değeri olduğunu bildiğinizde *opt veya opt.value() kullanın. Boş bir isteğe bağlı değerin * ile başvuru çözümlemesini yapmak tanımsız davranıştır.

#include <iostream>
#include <optional>
int main() {
    std::optional<std::string_view> name = "Ada";
    if (name) std::cout << *name << "\n";
}

Kendini Açıklayan İmzalar

std::optional dönüş türü, işlevin sonuç üretmeyebileceğini çağırana ilk bakışta bildirir; açıklama satırına gerek yoktur.

#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> getEnvName(bool present) {
    if (present) return std::string("CONFIG");
    return std::nullopt;
}
int main() { std::cout << getEnvName(true).has_value() << "\n"; }

İsteğe Bağlı Değeri Sıfırlama

Bir isteğe bağlı değeri yeniden boş yapmak için reset() çağırın veya std::nullopt atayın.

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 99;
    o.reset();
    std::cout << o.has_value() << "\n"; // 0
}

Yerinde Oluşturma

emplace, içerilen değeri doğrudan isteğe bağlı değerin içinde oluşturur ve fazladan bir kopyayı önler.

#include <iostream>
#include <optional>
#include <string>
int main() {
    std::optional<std::string> o;
    o.emplace("built in place");
    std::cout << *o << "\n";
}

İsteğe Bağlı Değer ve Gösterici

Ham bir gösterici null olabilir, ancak sahiplik hakkında hiçbir şey söylemez ve sarkan gösterici riski taşır. İsteğe bağlı değer, kendi değerine doğrudan sahip olur ve öbek belleği ayırmadan "belki yok" durumunu açıkça belirtir.

Başvuru İçeren İsteğe Bağlı Değer?

std::optional başvuru değil, değer saklar. Mevcut bir nesneye isteğe bağlı olarak başvurmak için bir gösterici saklayın veya std::optional<std::reference_wrapper<T>> kullanın.

İsteğe Bağlı Değer Ne Zaman Kullanılmalı

Sonuç vermeyebilecek aramalarda, başarısız olabilecek ayrıştırma işlemlerinde veya ayarlanmamış olabilecek ayarlarda kullanın. Sonraki derste içerilen değere erişmenin güvenli yollarını ele alacağız.

Kısa Kontrol

std::optional hakkındaki anlayışınızı kontrol edin.

Özet

std::optional temelleri hakkında şunları öğrendiniz:

  • Belirteçler veya null kullanmadan "bir değer veya hiçbir şey" durumunu temsil eder.
  • Varsayılan oluşturma veya std::nullopt ile boş olur.
  • has_value() veya bir mantıksal denetimle kontrol edilir.
  • Başarısız olabilecek aramalar için ideal bir dönüş türüdür.

Sıkça Sorulan Sorular

“optional ile Yokluğu Temsil Etme” dersi ücretsiz mi?

Evet — “optional ile Yokluğu Temsil Etme” 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.

“optional ile Yokluğu Temsil Etme” dersinde ne öğreneceğim?

Null işaretçilerden kaçının 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 1. dersidir.

“optional ile Yokluğu Temsil Etme” 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. optional ile Yokluğu Temsil Etme
  2. optional Değerlerine Erişme
  3. std::expected Temelleri
  4. Hata İşleme Örüntüleri
← C++ Academy Sayfasına Dön