C++
- Okunuşu
- si plas plas
Kısaca
C++, C'yi sınıflar ve şablonlarla genişleten; bellek ve performans üzerinde düşük seviyeli kontrolü koruyan, derlenen ve statik tipli bir dildir.
C++ nedir?
C++, Bjarne Stroustrup tarafından Bell Labs'te 1979'da "C with Classes" adıyla başlatılan ve 1983'te C++ adını alan, genel amaçlı bir programlama dilidir. Ad bir programcı şakasıdır: ++, C'de bir değeri bir artıran operatördür. ISO tarafından standartlaştırılır ve yaklaşık üç yılda bir C++17, C++20 ve C++23 gibi yeni bir sürüm çıkar.
C++ statik tiplidir ve yerel makine koduna derlenir. Birkaç farklı stili destekler: C gibi yordamsal kod, sınıflar ve kalıtımla nesne yönelimli kod ve fonksiyon ile sınıfların tipe özgü sürümlerini derleme zamanında üreten şablonlarla genel (generic) kod. Çöp toplayıcı yoktur; bunun yerine modern C++, bir nesnenin kapsamdan çıktığında yıkıcısında (destructor) belleğini ya da diğer kaynaklarını otomatik bırakmasına dayanan RAII'ye (Resource Acquisition Is Initialization) güvenir. std::unique_ptr ve std::shared_ptr gibi akıllı işaretçiler bu fikri öbek (heap) belleğine uygular; bu yüzden elle yazılmış new ve delete nadiren gerekir.
C++; oyun motorlarında, web tarayıcılarında, veritabanlarında, alım satım sistemlerinde, gömülü cihazlarda ve makine öğrenmesi kütüphanelerinin performans açısından kritik çekirdeklerinde yaygındır. "Sıfır maliyetli soyutlamalar" ilkesi, kullanmadığınız özellikler için çalışma zamanı bedeli ödememeniz gerektiği anlamına gelir. C++ ile çalışmak, tam donanımlı profesyonel bir atölyeye sahip olmak gibidir: neredeyse her şeyi yapabilir, ama hangi aletlerin ne zaman güvenle kullanılacağını öğrenmek zaman alır.
C++ artık yalnızca "ek özellikli C" değildir. C kodunun çoğunu derleyebilse de deyimsel modern C++ oldukça farklı görünür; ham diziler ve elle bellek yönetimi yerine std::vector ve std::string gibi standart kapsayıcıları kullanır. İsim dışında C# ile de ilgisi yoktur: C#, çöp toplayıcılı yönetilen bir çalışma ortamında çalışan ayrı bir dildir.
Önemli noktalar
- C++ yerel makine koduna derlenir ve performans üzerinde ince ayarlı kontrol sunar.
- Yordamsal, nesne yönelimli ve genel programlama stillerini destekler.
- Bellek, çöp toplayıcı yerine kapsam tabanlı RAII ve akıllı işaretçilerle yönetilir.
- Oyun motorlarında, tarayıcılarda, veritabanlarında ve diğer performans açısından kritik yazılımlarda yaygındır.
Örnek
#include <iostream>
#include <string>
#include <vector>
int main() {
// std::vector frees its own memory: no manual delete needed
std::vector<std::string> names = {"Ada", "Grace", "Alan"};
names.push_back("Barbara");
for (const auto& name : names) {
std::cout << "Hello, " << name << "\n";
}
return 0;
}Sık sorulan sorular
C++ öğrenmek diğer dillerden daha mı zor?
C++ geniş olduğu ve belleğe doğrudan kontrol verdiği için genellikle daha karmaşık dillerden biri sayılır. Birçok öğrenci, standart kapsayıcıları ve akıllı işaretçileri kullanan modern C++'ın daha küçük bir alt kümesiyle başlar ve oradan ilerler.
C++ ile C# arasındaki fark nedir?
İkisi ayrı dillerdir. C++ yerel koda derlenir ve belleği çöp toplayıcı olmadan yönetir; C# ise otomatik çöp toplamalı .NET çalışma ortamında çalışır.
C++'ta RAII ne anlama gelir?
RAII (Resource Acquisition Is Initialization), bellek, dosya ya da kilit gibi bir kaynağı bir nesnenin yaşam süresine bağlamak demektir. Nesne kapsamdan çıktığında kaynak, nesnenin yıkıcısında otomatik olarak serbest bırakılır.
Sık karşılaştırılanlar
İlgili sayfalar
- CProgramlama Dilleri, s. 3C, belleğe doğrudan erişim sağlayan, derlenen ve düşük seviyeli bir programlama dilidir; işletim sistemlerinde, sürücülerde ve gömülü yazılımlarda kullanılır.
- C#Programlama Dilleri, s. 4C#, çöp toplamalı .NET çalışma ortamında çalışan, statik tipli, nesne yönelimli bir dildir; web arka uçları, masaüstü uygulamalar ve oyunlar için kullanılır.
- OOPProgramlamanın Temelleri, s. 41OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- GenericsProgramlamanın Temelleri, s. 23Generics, tam tür güvenliğini korurken birçok veri türüyle çalışan fonksiyonlar, sınıflar ve türler yazmanıza olanak tanıyan bir dil özelliğidir.
- DerleyiciProgramlamanın Temelleri, s. 12Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- Memory Leakİşletim Sistemleri, s. 20Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin