Menu
Coddy logo textTech

C++ Hile Sayfası

Son güncelleme

Hello World ve program yapısı

Çalışma, bir int döndüren main'de başlar.

ElementKod
Bir başlık ekle (include)#include <iostream>
Giriş noktasıint main() { ... }
Bir satır yazdırstd::cout << "Hello, World!" << std::endl;
Girdi okustd::cin >> x;
std ad alanını kullanusing namespace std;
Başarıyı döndürreturn 0;
Yorumlar// line ve /* block */

Veri tipleri

TipAçıklama
intTam sayı (genellikle 32 bit)
long / long longDaha geniş tam sayılar
float / doubleKayan noktalı sayılar
charTek bayt / karakter
booltrue veya false
std::string<string>'ten dinamik metin
autoDerleyici tipi çıkarır
std::size_tBoyutlar ve indeksler için işaretsiz tip

Değişkenler ve referanslar

Referanslar takma adlardır; işaretçiler adresleri tutar.

İşlemSöz dizimi
Tanımla ve ilk değer ataint x = 5;
Süslü parantezle ilk değer atamaint x{5};
Sabitconst double PI = 3.14159;
Derleme zamanı sabiticonstexpr int N = 10;
Referans (takma ad)int &r = x;
İşaretçiint *p = &x;
Bir işaretçinin değerine eriş*p = 10;
Tip çıkarımıauto y = 3.14;

Kontrol akışı

İfadeSöz dizimi
If / elseif (x > 0) { ... } else { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
While döngüsüwhile (i < n) { ... }
Do-while döngüsüdo { ... } while (i < n);
For döngüsüfor (int i = 0; i < n; i++) { ... }
Aralık tabanlı forfor (auto x : vec) { ... }
Referansla aralık tabanlıfor (auto &x : vec) { ... }
Break / continuebreak; bir döngüden çıkar, continue; bir sonraki yinelemeye atlar

Fonksiyonlar

İşlemSöz dizimi
Bir fonksiyon tanımlaint add(int a, int b) { return a + b; }
Geri dönüş değeri yokvoid greet() { ... }
Varsayılan argümanlarint pow(int b, int e = 2) { ... }
Referansla geçirmevoid inc(int &x) { x++; }
Const referans (kopyasız)void print(const std::string &s) { ... }
Aşırı yüklemeint max(int a, int b); ve double max(double a, double b);
Lambdaauto f = [](int x) { return x * 2; };
Yakalamalı lambdaauto g = [n](int x) { return x + n; };

Sınıflar ve OOP

İşlemSöz dizimi
Bir sınıf tanımlaclass Dog { ... };
Erişim belirteçleripublic:, private:, protected:
Üye değişkenstd::string name;
Yapıcı (constructor)Dog(std::string n) : name(n) {}
Yıkıcı (destructor)~Dog() { ... }
Üye fonksiyonuvoid bark() { ... }
Bir nesne oluşturDog d("Rex");
Kalıtımclass Puppy : public Dog { ... };
Sanal (virtual) fonksiyonvirtual void speak();

STL kapsayıcıları

Standart kütüphaneden yaygın kapsayıcılar.

KapsayıcıKullanım ve örnek
std::vector<int>Dinamik dizi: v.push_back(1); v.size();
std::stringMetin: s += "!"; s.length();
std::array<int, 3>Sınır bilgisiyle sabit boyutlu dizi
std::map<K, V>Sıralı anahtar-değer: m["a"] = 1;
std::unordered_map<K, V>Hash map (daha hızlı arama, sırasız)
std::set<T>Sıralı benzersiz değerler: s.insert(5);
std::pair<A, B>İki değer: make_pair(1, "x")
std::queue / std::stackFIFO kuyruk / LIFO yığın adaptörleri

STL algoritmaları ve yineleyiciler

<algorithm>'den; çoğu bir begin/end yineleyici aralığı alır.

İşlemSöz dizimi
Begin / end yineleyicileriv.begin(), v.end()
Sıralastd::sort(v.begin(), v.end());
Azalan sıralastd::sort(v.begin(), v.end(), std::greater<int>());
Bir değer bulauto it = std::find(v.begin(), v.end(), 5);
Eşleşmeleri saystd::count(v.begin(), v.end(), 5);
Min / max elemanstd::max_element(v.begin(), v.end());
Bir aralığı toplastd::accumulate(v.begin(), v.end(), 0);
Her elemanı dönüştürstd::transform(v.begin(), v.end(), v.begin(), fn);

Akıllı işaretçiler ve modern C++

Otomatik temizlik için ham new/delete yerine akıllı işaretçileri tercih edin.

ÖzellikSöz dizimi
Tekil sahiplikauto p = std::make_unique<Dog>("Rex");
Paylaşılan sahiplikauto p = std::make_shared<Dog>("Rex");
Sahiplik içermeyen referansstd::weak_ptr<Dog> w = p;
Move semantiğiauto v2 = std::move(v1);
Nullptrint *p = nullptr;
Yapılandırılmış bağlamalarauto [key, val] = *it;
İsteğe bağlı değerstd::optional<int> maybe;
Şablonlartemplate <typename T> T add(T a, T b) { return a + b; }

En çok başvurduğunuz C++ söz dizimi, STL kapsayıcıları ve modern özellikler tek sayfada. Bu C++ hile sayfası, C++ yazmak için hızlı bir başvurudur - veri tipleri, referanslar, sınıflar, standart kütüphane kapsayıcıları ve algoritmaları ve ham new/delete yerine geçen akıllı işaretçiler.

Buradaki her şey standart C++'tır (C++11 ve sonrası) ve g++ veya clang++ ile derlenir. İhtiyacınız olanı kopyalayın ya da herhangi bir kod parçasını C++ playground'da canlı deneyin - kurmanız gereken bir derleyici yok.

C++ hile sayfası SSS

Bu C++ hile sayfası ücretsiz mi?
Evet. Bu C++ hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir söz dizimine, STL kapsayıcısına ya da akıllı işaretçiye bakmanız gerektiğinde geri dönün.
C++'ta işaretçi ile referans arasındaki fark nedir?
Bir işaretçi, bir adresi tutan değişkendir; null olabilir, başka bir yeri gösterecek şekilde yeniden atanabilir ve *p ile değerine erişirsiniz. Bir referans (int &r = x) mevcut bir değişken için takma addır - tanımlandığında bağlanmalıdır, asla null olamaz veya yeniden bağlanamaz ve değişkenin kendisi gibi kullanılır. Daha temiz referansla geçirme parametreleri için referanslar, isteğe bağlı veya yeniden atanabilir dolaylama gerektiğinde işaretçiler kullanın.
new/delete mi yoksa akıllı işaretçiler mi kullanmalıyım?
Akıllı işaretçileri tercih edin. std::unique_ptr ve std::shared_ptr (make_unique/make_shared ile) kapsam dışına çıktıklarında belleklerini otomatik olarak serbest bırakır; bu da manuel new/delete ile gelen bellek sızıntılarını ve çift serbest bırakmaları önler. Ham new/delete'e yalnızca belirli bir nedeni olan düşük seviyeli kodda başvurun.
C++'ı çevrimiçi olarak deneyebilir miyim?
Evet. C++ playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda derleyip çalıştırabilirsiniz - kurmanız gereken bir derleyici yok. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli C++ kursu sizi değişkenler ve döngülerden sınıflara ve STL'ye adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın yapı taşlarından (tipler, kontrol akışı, fonksiyonlar) gelişmiş olanlara (STL ve akıllı işaretçiler) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.
Coddy programming languages illustration

Coddy ile C++ öğren

BAŞLA