CodeBlanks Logo Icon CodeBlanks

Özet - Akıllı işaretçiler

unique_ptr, shared_ptr ve RAII'yi birleştirerek bir kaynak havuzu yazarsın.

Özet - Akıllı işaretçiler

Bu grupta std::unique_ptr, std::shared_ptr, std::weak_ptr, make_unique/make_shared ve RAII desenini öğrendin. Şimdi bunları birleştirerek bir kaynak havuzu yazacağız.

Önce std::make_unique ile tek sahip bir kaynak oluşturacağız. Sonra std::make_shared ile paylaşılan bir kaynak ekleyip use_count ile sahip sayısını yazdıracağız. Bu, akıllı işaretçilerin gerçek bir senaryoda nasıl birlikte çalıştığını gösterir.

Uygulama unique_ptr ile kaynak oluştur

auto p = std::make_unique<int>(100); ile tek sahip bir kaynak oluştur. *p değerini std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <memory>

int main() {
    // make_unique ile 100 değerinde kaynak oluştur, yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <memory>

int main() {
    auto p = std::make_unique<int>(100);
    std::cout << *p;
    return 0;
}

Beklenen çıktı

100

Uygulama shared_ptr ekle ve say

Önceki adımın make_unique çağrısını al. std::cout << *p << "\n"; ile yeni satıra geç. Sonra auto sp = std::make_shared<int>(200); ile paylaşılan kaynak oluştur. *sp ve sp.use_count() değerlerini boşlukla yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <memory>

int main() {
    auto p = std::make_unique<int>(100);
    std::cout << *p;
    // shared_ptr ekle, değer ve use_count yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <memory>

int main() {
    auto p = std::make_unique<int>(100);
    std::cout << *p << "\n";
    auto sp = std::make_shared<int>(200);
    std::cout << *sp << " " << sp.use_count();
    return 0;
}

Beklenen çıktı

100
200 1

Akıllı işaretçiler özet

Akıllı işaretçiler modern C++'ın bellek yönetiminin temelidir. std::unique_ptr tek sahiplik, std::shared_ptr paylaşılan sahiplik, std::weak_ptr zayıf gözlem sağlar. make_unique ve make_shared güvenli oluşturma fonksiyonlarıdır.

RAII deseni kaynak yönetiminin temelidir: yapıcı alır, yıkıcı bırakır. Bu desen sayesinde istisna olsa bile kaynaklar güvenle serbest bırakılır. Artık C++'ın orta seviye konularını tamamladın; ileri seviyede concurrency, metaprogramming ve performans optimizasyonu göreceksin.

Soru ve cevaplar

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

1 Hangi akıllı işaretçi tek sahiplik için kullanılır?

main.cpp
// tek sahip, kopyalanamaz
  • std::unique_ptr Doğru cevap
  • std::shared_ptr
  • std::weak_ptr
  • std::auto_ptr

Açıklama: unique_ptr tek sahiplik sağlar.

2 make_unique çağrısını tamamla

Soru
auto p = std::____<int>(100);
Cevap
auto p = std::make_unique<int>(100);

Açıklama: make_unique güvenli unique_ptr oluşturur.

Orta seviye bölümündeki tüm dersler