Özet - Akıllı işaretçiler
- C++ kursu
- Orta seviye
- Ders 87/116
- 5 dk
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
#include <iostream>
#include <memory>
int main() {
// make_unique ile 100 değerinde kaynak oluştur, yazdır
return 0;
}Örnek çözüm
#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
#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
#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?
// 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
auto p = std::____<int>(100);
auto p = std::make_unique<int>(100);
Açıklama: make_unique güvenli unique_ptr oluşturur.