0Pricing
C++ Academy · Ders

Aralık Tabanlı for, nullptr ve enum class

C++11 kolaylıklarını kullanın: aralık tabanlı for, nullptr ve güçlü tür denetimli enum'lar

Aralık Tabanlı for, nullptr ve enum class, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

C++11 için Üç Hızlı Kazanım

C++11 birçok küçük iyileştirme getirdi. Her gün kullanacağınız üç özellik şunlardır: range-based for, nullptr ve enum class.

Aralık Tabanlı for Özeti

Dizin hesaplaması yapmadan, begin() ve end() içeren herhangi bir kapsayıcı üzerinde yineleme yapınız.

for (const auto& x : v) {
    process(x);
}

Yerine Geçtiği Yapı

Ayrıntılı yineleyici tabanlı döngü, tek satırlık bir koda dönüşür.

// Before C++11
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
    process(*it);
}

nullptr, NULL'dan Daha İyi

nullptr, türü olan bir boş işaretçi sabitidir. 0 için kullanılan bir makro olan NULL'un aşırı yük çözümlemesindeki belirsizliğini önler.

void f(int);
void f(int*);

f(NULL);      // calls f(int)
f(nullptr);   // calls f(int*)

nullptr Neden Daha İyi?

nullptr'ı tutarlı biçimde kullanınız:

  • Farklı bir türü vardır (std::nullptr_t)
  • Niyeti daha açık ifade eder
  • Şablon üst programlamada çalışır
  • Yanlışlıkla int türüne dönüştürülemez

Düz enum: Hata Kaynağı

Eski tarz numaralandırmalar, adlarını çevreleyen kapsama taşır ve örtük olarak int türüne dönüşür.

enum Color { RED, GREEN, BLUE };
int c = RED;            // implicit conversion, no warning
// RED, GREEN, BLUE leak into global scope

enum class: Kapsamlı ve Tür Güvenli

C++11 enum class için niteleme yapılmasını zorunlu kılar ve int türüne örtük dönüşümü engeller.

enum class Color { Red, Green, Blue };
Color c = Color::Red;
// int n = Color::Red;     // ERROR
std::cout << static_cast<int>(c);   // explicit conversion

Temel Türü Belirtme

Bir enum class için depolama boyutunu belirli bir tamsayı türüne sabitleyebilirsiniz.

enum class Status : uint8_t { OK = 0, FAIL = 1, RETRY = 2 };

enum class için İleri Bildirim

Temel tür bilindiği için enum class yapıları için ileri bildirim yapılabilir; bu, üst bilgi dosyalarının birbirini içermesini önlemek için kullanışlıdır.

// header A
enum class Color : int;

// header B (full definition)
enum class Color : int { Red, Green, Blue };

Düz enum Kullanımının Uygun Olduğu Durumlar

Düz numaralandırmaların hâlâ kullanım alanları vardır: örtük dönüşümü gerçekten istediğiniz tamsayı bayrak bit maskeleri. Tasarım tercihinizi açıkça belgelendiriniz.

Geçiş İpucu

Bir kod tabanını modernleştirirken düz numaralandırmaları enum class yapılarına kademeli olarak dönüştürünüz. Örtük int dönüşümüne dayanan yerleri arayınız ve static_cast ekleyiniz.

Kısa Sınama

enum class yapısını düz bir enum yapısından daha güvenli kılan nedir?

Özet

C++11'in üç hızlı kazanımı şunlardır: aralık tabanlı for, yineleyici kalıplarını azaltır; nullptr, NULL'un yerini alır; enum class ise kapsamlı ve tür güvenli numaralandırmalar sağlar. Üçünü de varsayılan olarak kullanınız.

Sıkça Sorulan Sorular

“Aralık Tabanlı for, nullptr ve enum class” dersi ücretsiz mi?

Evet — “Aralık Tabanlı for, nullptr ve enum class” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Aralık Tabanlı for, nullptr ve enum class” dersinde ne öğreneceğim?

C++11 kolaylıklarını kullanın: aralık tabanlı for, nullptr ve güçlü tür denetimli enum'lar C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Aralık Tabanlı for, nullptr ve enum class” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. auto, decltype ve Tür Çıkarımı
  2. Aralık Tabanlı for, nullptr ve enum class
  3. Lambda İfadeleri: Yakalama, Değiştirilebilirlik, Genellik
  4. Yapılandırılmış Bağlamalar ve if-init C++17
← C++ Academy Sayfasına Dön