- CİLT I — TEMEL
- Kısım 0 — C++'a Giriş
- 0.1 Dil hakkında
- 0.2 Standartlar
- 0.3 Derleme süreci
- 0.4 Başlık ve kaynak dosya ayrımı
- 0.5 İlk program
- Kısım 1 — C ve C++ İçindeki C
- 1.1 C++ bir C üst kümesi değildir
- 1.2 Tür sistemi farkları
- 1.3
constfarkları - 1.4
void*dönüşümleri - 1.5
NULLvenullptr - 1.6 İşlev bildirimleri
- 1.7 Operatörlerin değer kategorileri
- 1.8
enumfarkları - 1.9 Etiket isimleri
- 1.10 C kütüphanesini C++'tan çağırmak
- Kısım 2 — Temel Kavramlar
- 2.1 Bildirim ve tanım
- 2.2 Kapsam
- 2.3 İsim arama
- 2.4 L-Value ve R-Value
- 2.5 Tanımsız davranış ve akrabaları
- 2.6 Tamamlanmış ve tamamlanmamış türler
- 2.7 One Definition Rule
- 2.8 Sabitlerin yazımı
- Kısım 3 — İlk Değer Verme
- 3.1 Beş biçim
- 3.2 Default-initialization
- 3.3 Value-initialization
- 3.4 Direct-initialization
- 3.5 Copy-initialization
- 3.6 Direct-list-initialization
- 3.7 Daraltıcı dönüşüm
- 3.8 Most vexing parse
- 3.9 Hangisini kullanmalı
- 3.10 Bileşik nesnelere ilk değer verme
- Kısım 4 — Tür Çıkarımı
- 4.1
auto - 4.2 Üç çıkarım kalıbı
- 4.3 Dizi ve işlev isimlerinin çürümesi
- 4.4
autone zaman kullanılmalı - 4.5
auto x{...}tuzağı - 4.6 Sondan yazılan geri dönüş türü
- 4.1
- Kısım 5 —
enumveenum class- 5.1 Numaralandırma türleri
- 5.2 Kapsamlandırılmamış
enum'un üç sorunu - 5.3
enum class - 5.4
using enum
- Kısım 6 — Sabitler
- 6.1
constdeğişkenler - 6.2 C++'a özgü iki fark
- 6.3 Göstericilerde
constun iki yeri - 6.4 Okuma / yazma ayrımı
- 6.5
constexprdeğişkenler - 6.6
constexprişlevler
- 6.1
- Kısım 7 — Varsayılan Argümanlar
- 7.1 Ne işe yarar
- 7.2 Üç kural
- 7.3 Çift anlamlılık tuzağı
- 7.4 İmzanın parçası değildir
- Kısım 8 — Referanslar
- 8.1 Referans nedir
- 8.2 İki değişmez kural
- 8.3
constreferanslar ve geçici nesneler - 8.4 Tür uyumu
- 8.5 İşlev parametresi olarak referanslar
- 8.6 Geri dönüş değeri olarak referanslar
- 8.7 Referans mı gösterici mi
- 8.8 Diziye ve işleve referans
- 8.9 Üçüncü referans türü
- Kısım 9 — İşlev Yüklemesi ve Yükleme Çözümlemesi
- 9.1 Ne zaman yükleme vardır
- 9.2 İmza neyi içerir
- 9.3 Üç aşama
- 9.4 Uygun aday listesi
- 9.5 Dönüşüm hiyerarşisi
- 9.6 Standart dönüşümlerin içindeki sıra
- 9.7 Birden fazla parametre
- 9.8 Varsayılan argümanlar ve çift anlamlılık
- 9.9
extern "C"
- Kısım 10 — Tür Dönüştürme Operatörleri
- 10.1 Neden dört ayrı operatör
- 10.2
static_cast - 10.3
const_cast - 10.4
reinterpret_cast - 10.5
dynamic_cast - 10.6 Hangisini ne zaman
- Kısım 11 —
inline- 11.1 Çözdüğü problem
- 11.2 Ne demek değil
- 11.3 Örtülü olarak
inlineolanlar - 11.4
inlinedeğişkenler
- Kısım 12 — Sınıflar
- 12.1 Sınıf nedir
- 12.2 Sınıf bloğunun öğeleri
- 12.3 Erişim kontrolü
- 12.4 Sınıf kapsamı ve isim arama
- 12.5 Üye işlevlerin tanımlanması
- 12.6
thisgöstericisi - 12.7
constüye işlevler - 12.8 Kurucu işlev
- 12.9 Sonlandırıcı işlev
- 12.10 Kurucu işlev ilk değer verme listesi
- 12.11 Sınıf içi ilk değer verme
- 12.12 Devreden kurucu işlevler
- 12.13 Dönüştüren kurucu işlev ve
explicit - 12.14
staticüyeler - 12.15
mutable - 12.16
friendbildirimleri - 12.17 Geçici nesneler
- 12.18 İçsel türler
- Kısım 13 — Özel Üye İşlevler
- 13.1 Altı işlev
- 13.2 Derleyici ne zaman yazar
- 13.3 Kopyalayan kurucu işlev ne zaman çağrılır
- 13.4 Kopyalayan atama işlevi
- 13.5 Varsayılan kopyalamanın yetmediği yer
- 13.6 Big-Three
- 13.7 Taşıma
- 13.8 Big-Five
- 13.9 Rule of Zero
- 13.10
= defaultve= delete - 13.11 Sık yapılan hatalar
- 13.12 Değer döndürmekten çekinmeyin
- Kısım 14 — Operatör Yüklemesi
- 14.1 Amaç
- 14.2 Kurallar
- 14.3 Üye mi, global mi
- 14.4
friendve ADL bağlantısı - 14.5 Sık yüklenen operatörler
- 14.6 Önek ve sonek ayrımı
- 14.7 Bit bayrakları
- Kısım 15 — Dinamik Ömürlü Nesneler
- 15.1 Dört ömür kategorisi
- 15.2
newvedelete - 15.3 Üç klasik hata
- 15.4 Bellek yetmezse
- 15.5 Bunları neden yazmamalısınız
- Kısım 16 — Tür Eş İsimleri ve İsim Alanları
- 16.1 Tür eş isimleri
- 16.2 İsim alanları
- 16.3
usingbildirimi veusingdirektifi - 16.4 İsimsiz isim alanları
- 16.5 Argümana bağlı isim arama
- 16.6
inlineisim alanları
- Kısım 17 — Kalıtım
- 17.1 Kalıtım ne işe yarar
- 17.2 Sözdizimi ve varsayılan kalıtım biçimi
- 17.3 Türemiş nesne nasıl hayata gelir
- 17.4 upcasting
- 17.5 İsim arama: türemiş sınıf taban sınıfı gizler
- 17.6 Çalışma zamanı çok biçimliliği
- 17.7 Sanal sonlandırıcı işlev
- 17.8 Soyut sınıflar
- 17.9 Nesne dilimlenmesi
- 17.10 Kaçınılması gereken üç şey
- Kısım 18 — Exception Handling
- 18.1 İki yaklaşım
- 18.2
try,catch,throw - 18.3 Değerle gönder, referansla yakala
- 18.4 Standart hata sınıfları
- 18.5 Yığının geri sarılması
- 18.6 Asıl cevap: RAII
- 18.7 Nerede yakalamalı
- 18.8 Sonlandırıcı işlevler hata göndermemeli
- 18.9 Kurucu işlevde hata
- Kısım 19 — Çalışma Zamanı Tür Bilgisi
- 19.1 Ne işe yarar
- 19.2
dynamic_cast - 19.3
typeidvestd::type_info - 19.4 Ne zaman kullanmamalı
- Kısım 20 —
std::string- 20.1 Neden
char*değil - 20.2 Oluşturma ve temel işlemler
- 20.3 Arama ve
npos - 20.4 Değiştirme işlemleri
- 20.5 C arayüzleriyle köprü
- 20.6 Küçük yazı optimizasyonu
- 20.1 Neden
- Kısım 21 — Bileşik Nesneler
- 21.1 has-a ilişkisi
- 21.2 Hayata gelme sırası
- 21.3 Özel üye işlevler ve composition
- 21.4 Arayüz devretme
- 21.5 İçsel türler
- Kısım 22 — Şablonlara Giriş
- 22.1 Jenerik programlama
- 22.2 İşlev şablonları
- 22.3 Şablon parametresi türleri
- 22.4 Sınıf şablonları
- 22.5 Örnekleme
- 22.6 Bundan sonrası
- Kısım 23 — STL
- 23.1 Üç bileşen
- 23.2 İteratörler
- 23.3 Aralık tabanlı
for - 23.4 Kaplar
- 23.5 Ortak işlemler
- 23.6 İteratör geçersizleşmesi
- 23.7 Algoritmalar
- Kısım 24 — Lambda İfadeleri
- 24.1 Ne olduğu
- 24.2 Sözdizimi
- 24.3 Yakalama
- 24.4 Yakalanan değişkeni değiştirmek
- 24.5 Nereye kadar
- Kısım 25 — Akıllı Göstericiler
- 25.1 Çözdükleri problem
- 25.2
std::unique_ptr - 25.3
std::shared_ptr - 25.4
std::weak_ptr - 25.5 Hangisini seçmeli
- Kısım 26 — Giriş–Çıkış Akımları
- 26.1 Hiyerarşi
- 26.2 Biçimli giriş–çıkış
- 26.3 Akımın durumu
- 26.4 Manipülatörler
- 26.5 Dosya akımları
- 26.6 Yazı akımları
- 26.7 Kendi türünüz için
<< - 26.8 Biçimlendirme için ayrı bir araç
- Kısım 27 — Eşzamanlılığa Giriş
- 27.1 İş parçacığı
- 27.2 Data race
- 27.3
mutexvelock_guard - 27.4 Bundan sonrası
- CİLT II — İLERİ
- Kısım 1 — Değer Kategorileri ve Referans Semantiği
- 1.1 Değer Kategorilerinin Tam Modeli
- 1.2 Forwarding Reference
- Kısım 2 — Taşıma Semantiği ve Bildirim Kuralları
- 2.1 Üç statü
- 2.2 Bildirim baskılama tablosu
- 2.3 Kopyalanabilirlik ve taşınabilirlik tasarımı
- 2.4
= default'un yeri önemlidir - 2.5 Kaynağı devralınmış nesnenin durumu
- 2.6
noexceptve taşıma - 2.7 Taşımanın sessizce devre dışı kaldığı iki senaryo
- 2.8 Copy-and-Swap deyimi
- Kısım 3 — Kopyalama Eliminasyonu
- 3.1 Ne zaman söz konusudur
- 3.2 İki tür
- 3.3 Zorunlu eliminasyon
- 3.4 NRVO — hâlâ bir optimizasyon
- 3.5 Eliminasyonu engelleyen yazımlar
- 3.6 Yan etkili kopyalama işlevleri
- 3.7 Özet
- Kısım 4 — İleri Şablon Teknikleri
- 4.1 Şablon parametrelerinin dört grubu
- 4.2 Örnekleme
- 4.3 Tam özelleştirme
- 4.4 Kısmi özelleştirme
- 4.5 Değişken sayıda parametre
- 4.6 Katlama ifadeleri
- 4.7 CTAD ve deduction guide
- 4.8 SFINAE
- 4.9 İki aşamalı isim arama
- 4.10 Eş isim ve değişken şablonları
- 4.11 Kendi iteratörünüzü yazmak
- 4.12 Yardımcı iteratörler
- 4.13 Demeti argüman listesine açmak
- Kısım 5 — Derleme Zamanı Araçları
- 5.1 Meta işlev kavramı
- 5.2
std::integral_constant - 5.3
type_traits - 5.4
if constexpr - 5.5
std::declval - 5.6
static_assert - 5.7
std::type_identity
- Kısım 6 — Kalıtımın İç Yapısı ve İleri Kullanımları
- 6.1 Sanal gönderim nasıl çalışır
- 6.2 Sanal gönderimin devreye girmediği yerler
- 6.3 Statik tür üzerinden çözülen üç şey
- 6.4 Covariance
- 6.5 Sanal kurucu işlev deyimi
- 6.6 NVI — Non-Virtual Interface
- 6.7
privateveprotectedkalıtım - 6.8 Empty Base Optimization
- 6.9 Kısıtlı çok biçimlilik
- 6.10 Çoklu kalıtım
- 6.11 Elmas formasyonu ve sanal kalıtım
- 6.12 Fragile Base Class Problem
- 6.13 Çalışma zamanı çok biçimliliğine alternatifler
- Kısım 7 — Concepts
- 7.1 Çözdüğü problem
- 7.2
requirescümlesi - 7.3 Kavram tanımlamak
- 7.4
requiresifadesi - 7.5 Kısaltılmış yazımlar
- 7.6 Standart kavramlar
- 7.7 Kısıt sıralaması
- 7.8 SFINAE'nin yerini alması
- Kısım 8 — Ranges ve Views
- 8.1 STL'in ikinci sürümü
- 8.2
rangebir tür değil, bir kavramdır - 8.3 Sentinel
- 8.4
viewkavramı - 8.5 Tembel değerlendirme
- 8.6 Aralık uyumlandırıcıları ve fabrikaları
- 8.7 Boru hattı
- 8.8 Yardımcı görünümler
- 8.9 İzdüşüm
- 8.10 Sarkma koruması
- 8.11 Kaptan görünüme, görünümden kaba
- Kısım 9 — Coroutines
- 9.1 Askıya alınabilen işlev
- 9.2 Üç anahtar sözcük
- 9.3 Geri dönüş türü sözleşmesi
- 9.4 Eşyordam çerçevesi
- 9.5
co_awaitve beklenebilir nesneler - 9.6 İş parçacıklarıyla ilişki
- 9.7 C++20'de eksik olan
- Kısım 10 —
std::format- 10.1 Çözdüğü problem
- 10.2 Temel kullanım
- 10.3 Biçim belirtme dili
- 10.4 Kendi türünüz için biçimlendirici
- 10.5 Çıktıyı yönlendirmek
- 10.6
std::print - 10.7 Akımların yerini alıyor mu
- Kısım 11 — Vocabulary Türleri
- 11.1 Ortak amaç
- 11.2
std::string_view - 11.3
std::span - 11.4
std::optional - 11.5
std::variant - 11.6
std::any - 11.7
std::byte
- Kısım 12 — İleri Lambda Teknikleri
- 12.1 Kapanış türünün anatomisi
- 12.2
mutableve çağrı operatörününconstluğu - 12.3 İlk değerli yakalama
- 12.4 Genelleştirilmiş lambda
- 12.5 Hemen çağrılan lambda
- 12.6 Özyinelemeli lambda
- Kısım 13 — İleri Hata Yönetimi
- 13.1 Garanti seviyeleri
- 13.2
noexceptbelirteci ve operatörü - 13.3
noexceptve geçersiz kılma - 13.4
std::exception_ptr - 13.5 İşlev try blokları
- Kısım 14 — Deyimler ve Kalıplar
- 14.1 Deyim nedir
- 14.2 Kapsülleme deyimleri
- 14.3 Çok biçimlilik deyimleri
- 14.4 İsim arama ve gönderim deyimleri
- 14.5 Kaynak ve ömür deyimleri
- 14.6 Hata yönetimi deyimleri
- 14.7 Karma fonksiyonu özelleştirme
- 14.8 Mixin sınıflar
- Kısım 15 — Eşzamanlılık
- 15.1 Bellek modeli
- 15.2 İş parçacığı yönetimi
- 15.3 Kilit türleri
- 15.4
std::condition_variable - 15.5
std::futurevestd::promise - 15.6
std::async - 15.7
std::packaged_task - 15.8 Atomik işlemler
- 15.9 Paralel algoritmalar
- 15.10 Ayırıcı darboğazı
- Kısım 16 — Sınıfların ve Operatörlerin İleri Araçları
- 16.1 Tür dönüştürme operatör işlevleri
- 16.2 Referans niteleyicili üye işlevler
- 16.3 Açık nesne parametresi
- 16.4 Üç yollu karşılaştırma
- 16.5 Kullanıcı tanımlı literal operatörleri
- 16.6 Bileşik türler
- Kısım 17 — Nesne Ömrü ve Bellek Yönetimi
- 17.1
newifadesi ileoperator newfarkı - 17.2 Sınıf düzeyinde yükleme
- 17.3
placement new - 17.4
std::set_new_handler - 17.5 Statik ömürlü nesnelerin hayata gelme sırası
- 17.6 Ömrün uzatılmasının iki istisnası
- 17.7
std::allocator - 17.8 Hizalama
- 17.1
- Kısım 18 — Derleme Zamanı Hesaplamanın Evrimi
- 18.1
constexprişlevlerin gevşeyen kısıtları - 18.2
constexprsınıflar ve kurucu işlevler - 18.3
consteval - 18.4
constinit
- 18.1
C++ Başvuru Kitabı
Temel ve İleri Seviyeler — İki Cilt Bir Arada

Necati Ergin'in C++ ve İleri C++ kurslarındaki ders notlarından, kendisinin izniyle derlenmiş iki ciltlik Türkçe başvuru kitabı. Cilt I yeni mezunun ilk yılında ihtiyaç duyacaklarını, Cilt II kıdemli geliştiricinin bilmesi gerekenleri kapsıyor. 226 sayfa, 46 bölüm. Necati Ergin'in C++ ve İleri C++ kurslarındaki ders notlarından, kendisinin izniyle derlenmiş iki ciltlik Türkçe başvuru kitabı. Cilt I yeni mezunun ilk yılında ihtiyaç duyacaklarını, Cilt II kıdemli geliştiricinin bilmesi gerekenleri kapsıyor. 226 sayfa, 46 bölüm. Ücretsizdir.
Minimum price
Free!
$1.00
You pay
Author earns
About
About the Book
Necati Ergin'in C++ ve İleri C++ kurslarında tutulmuş ders notlarından derlenmiş, iki ciltlik Türkçe başvuru kitabı. 226 sayfa, 46 bölüm. Kendisinin izniyle yayımlanmaktadır.
Kitap neden iki cilt?
Cilt I, yeni mezun bir C++ geliştiricisinin ilk yılında bilmesi gerekenleri kapsıyor: her konu, o aracı doğru kullanabilmeye yetecek kadar anlatılıyor. Cilt II ise araçların iç yapısını, tasarım gerekçelerini ve kütüphane yazarken gereken teknikleri ele alıyor.
İki cilt kümülatif okunmak üzere yazıldı. Bağlayıcı kural şu: Cilt I, Cilt II'nin geri almak zorunda kalacağı hiçbir şey söylemez. Basitleştirme vardır, yanıltma yoktur. Cilt I bölümlerinin sonundaki geçiş kutuları, o konunun Cilt II'de nereden devam ettiğini gösteriyor.
Notlardan kitaba nasıl gelindi?
Ders notları tarihe göre sıralı düz metindi; bir konu birkaç derse yayılıyor, aynı konu iki not setinde farklı derinlikte iki kez anlatılıyordu. Ders sırası bırakılıp konu sırasına geçildi. Örnek olarak, değer kategorileri iki dosyada 53 ayrı yerde geçiyordu; bunların dördü konuyu anlatan, kırk dokuzu kullanan pasajdı. Anlatanlar tek bölümde toplandı.
İki not farklı şey söylediğinde kaynağı araştırıldı. Dilin davranışının gerçekten değiştiği yerlerde eski ve yeni anlatım birlikte korundu; kitapta on üç "Standart Notu" kutusu var ve dokuzu C++17 ile C++20'de toplanıyor.
Bölüm sıralaması olarak hocanın kendi müfredat sıralaması kullanıldı.
Şeffaflık notu
Notların yeniden yapılandırılması ve metnin yazımı Claude ile birlikte yürütüldü. Yapının kurulması, cilt ayrımının ölçütü ve hangi notun nereye gideceği kararları bana aittir.
Kitabın dört alt başlığı iki not setinde de bulunmuyordu; bunlar dışarıdan yazıldı ve örnekleri bu çalışmaya aittir: devreden kurucu işlevler, data race, std::byte ve mixin sınıflar. Kitabın geri kalanı ders notlarına dayanmaktadır.
Bu kitap ücretsizdir.
Ticari bir beklentim yok. Amacım, Türkçe C++ kaynağına mütevazı bir katkıda bulunmak. Hocanın emeğiyle ortaya çıkmış bir birikimin daha geniş bir okuyucuya ulaşmasına aracılık edebilirsem, bu çalışma amacına ulaşmış olur.
Kitapta yanlış, eksik veya belirsiz bulduğunuz yerleri bana iletirseniz sevinirim; düzeltmeler sürüm numarası artırılarak yayımlanacaktır.
Author
About the Author
İstanbul Havalimanı'nda elektrik sistemleri mühendisi olarak çalışıyorum; aynı zamanda İstanbul Üniversitesi'nde Biyomedikal Mühendisliği yüksek lisansı yapıyorum. Leanpub'da yayımladığım çalışmalar, katıldığım kurslarda tuttuğum ders notlarından derlenmiş Türkçe kaynaklardır. Hepsi ücretsizdir; amacım Türkçe teknik kaynak birikimine mütevazı bir katkıda bulunmak.
Contents
Table of Contents
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earned over $15 million writing, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them
Write and Publish on Leanpub
You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!
Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.
Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.