C++ PROGRAMLAMA NEDİR?

C++ kaynak kodu editörde açık bellek yönetimi ve sınıf tanımları görünüyor

Oyun motorları, işletim sistemleri, veritabanları, tarayıcılar — bunların büyük bölümü C++ ile yazılmış. Unreal Engine, Chrome, MySQL, Windows çekirdeğinin önemli kısımları. Performansın milisaniyelerle ölçüldüğü yerlerde C++ hâlâ vazgeçilmez.

C++ Nedir?

C++, 1979 yılında Bjarne Stroustrup tarafından C diline nesne yönelimli programlama özelliklerini eklemek amacıyla geliştirildi. "C with Classes" adıyla başlayan proje, 1983'te C++ adını aldı. O tarihten bu yana sürekli evrildi; C++11, C++14, C++17 ve C++20 standartlarıyla modern bir dil haline geldi.

C++ hem düşük seviyeli bellek yönetimi hem de yüksek seviyeli soyutlama sunar. Bu ikili yapı gücünün ve karmaşıklığının kaynağı. Bir yanda donanıma yakın işlemler yapabilirsiniz, öte yanda şablonlar ve standart kütüphane ile üretken yazılım geliştirirsiniz.

C ve C++ Farkı

C prosedürel bir dildir; nesne kavramı yoktur. C++, C'nin üzerine nesne yönelimli programlama, şablonlar (templates), istisnalar (exceptions) ve standart kütüphane (STL) ekler. C kodu büyük ölçüde C++ derleyicisiyle derlenir; tersi doğru değildir.

Temel C++ Yapıları

#include <iostream>
#include <string>
#include <vector>

// Sınıf tanımlama
class Calisan {
private:
    std::string ad;
    double maas;

public:
    Calisan(std::string ad, double maas) 
        : ad(ad), maas(maas) {}

    void bilgi_goster() const {
        std::cout << ad << " - Maaş: " << maas << " TL
";
    }

    double get_maas() const { return maas; }
    void zam_yap(double oran) { maas *= (1 + oran); }
};

int main() {
    std::vector<Calisan> ekip = {
        {"Ahmet", 25000},
        {"Zeynep", 30000},
        {"Mehmet", 22000}
    };

    for (auto& c : ekip) {
        c.zam_yap(0.15);  // %15 zam
        c.bilgi_goster();
    }
    return 0;
}

Bellek Yönetimi

C++'ın en kritik ve en zorlu konusu bellek yönetimidir. Dinamik bellek tahsisi ve serbest bırakma programcının sorumluluğundadır. Yanlış kullanım bellek sızıntılarına (memory leak) veya tanımsız davranışa (undefined behavior) yol açar.

Modern C++: Smart Pointerlar

C++11 ile gelen akıllı işaretçiler (smart pointers) bellek yönetimini güvenli hale getirir. Ham işaretçi (raw pointer) yerine unique_ptr ve shared_ptr kullanmak modern C++ pratiğinin temel kurallarından biridir.

#include <memory>

// Ham işaretçi — tehlikeli
int* raw = new int(42);
delete raw;  // Unutulursa bellek sızıntısı

// unique_ptr — kapsam dışına çıkınca otomatik serbest bırakır
auto uptr = std::make_unique<int>(42);

// shared_ptr — referans sayımı ile paylaşımlı sahiplik
auto sptr1 = std::make_shared<std::string>("merhaba");
auto sptr2 = sptr1;  // İkisi aynı nesneye işaret ediyor
Oyun motoru geliştirme ortamında C++ kodu ve 3D sahne editörü yan yana

STL — Standart Şablon Kütüphanesi

STL, C++'ın en güçlü özelliklerinden biridir. Vector, map, set, queue, stack gibi veri yapıları ve sort, find, transform gibi algoritmalar hazır olarak gelir. Sıfırdan veri yapısı yazmak yerine STL'yi verimli kullanmak iyi C++ programcısının temel becerisidir.

#include <algorithm>
#include <map>

std::map<std::string, int> puan_tablosu;
puan_tablosu["Ahmet"] = 95;
puan_tablosu["Zeynep"] = 87;
puan_tablosu["Mehmet"] = 92;

// En yüksek puanı bul
auto en_yuksek = std::max_element(
    puan_tablosu.begin(), puan_tablosu.end(),
    [](const auto& a, const auto& b) {
        return a.second < b.second;
    }
);
std::cout << "En yüksek: " << en_yuksek->first 
          << " (" << en_yuksek->second << ")
";

C++ Kullanım Alanları

C++ performans gereksiniminin maksimum olduğu alanlarda öne çıkar:

  • Oyun motorları: Unreal Engine, id Tech, CryEngine — düşük gecikme ve donanım kontrolü gerektirir
  • Sistem programlama: İşletim sistemi bileşenleri, sürücüler, çekirdek modülleri
  • Gömülü sistemler: Otomotiv, IoT, gerçek zamanlı kontrol cihazları
  • Yüksek frekanslı alım-satım: Borsada milisaniye altı gecikme arayan finans sistemleri
  • Derleyici ve sanal makine geliştirme: JVM, LLVM, V8 gibi temel altyapılar
  • 3D grafik ve simülasyon: CAD yazılımları, görüntüleme motorları, fizik simülatörleri
  • Tarayıcı motorları: Chromium (Chrome), WebKit (Safari)
Gömülü sistem mühendisi laboratuvar tezgâhında devre kartı incelerken laptop'ta C++ kodu açık

C++ ve Qt'yi sistematik biçimde öğrenmek için C++ Qt eğitimi programımıza göz atabilirsiniz.