0Pricing
C++ Academy · Pelajaran

Range-based for, nullptr, dan enum class

Gunakan kemudahan C++11: range-based for, nullptr, dan enum bertipe kuat

Range-based for, nullptr, dan enum class adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Tiga Peningkatan Cepat C++11

C++11 menghadirkan banyak perbaikan kecil. Tiga yang akan Anda gunakan setiap hari adalah range-based for, nullptr, dan enum class.

Ringkasan Perulangan Berbasis Rentang

Lakukan iterasi pada kontainer apa pun yang memiliki begin() dan end() tanpa aritmetika indeks.

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

Apa yang Digantikannya

Perulangan berbasis iterator yang bertele-tele menjadi satu baris kode.

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

nullptr Mengungguli NULL

nullptr adalah literal penunjuk null bertipe. Ini menghindari ambiguitas resolusi kelebihan beban pada NULL (makro untuk 0).

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

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

Mengapa nullptr Unggul

Gunakan nullptr secara konsisten:

  • Tipe yang berbeda (std::nullptr_t)
  • Maksud yang lebih jelas
  • Dapat digunakan dalam metaprogramming templat
  • Tidak dapat secara tidak sengaja dikonversi menjadi int

enum Biasa: Sumber Masalah

Enum gaya lama membocorkan namanya ke cakupan yang memuatnya dan secara implisit dikonversi menjadi bilangan bulat.

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

enum Kelas: Terlingkup dan Bertipe

enum class C++11 mengharuskan kualifikasi dan melarang konversi implisit menjadi bilangan bulat.

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

Menentukan Tipe Dasar

Anda dapat menetapkan ukuran penyimpanan enum kelas ke tipe bilangan bulat tertentu.

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

Mendeklarasikan Maju enum Kelas

Karena tipe dasarnya telah diketahui, enum kelas dapat dideklarasikan maju—berguna untuk memutus ketergantungan penyertaan berkas header.

// header A
enum class Color : int;

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

Kapan enum Biasa OK

Enum biasa masih memiliki kegunaan: masker bit bendera berbasis bilangan bulat ketika Anda memang menginginkan konversi implisit. Dokumentasikan pilihan desain tersebut secara eksplisit.

Tip Migrasi

Saat memodernisasi basis kode, ubah enum biasa menjadi enum class secara bertahap. Cari tempat yang bergantung pada konversi implisit menjadi bilangan bulat dan tambahkan static_cast.

Pemeriksaan Singkat

Apa yang membuat enum class lebih aman daripada enum biasa?

Ringkasan

Tiga peningkatan cepat C++11: perulangan berbasis rentang mengurangi kode iterator yang berulang, nullptr menggantikan NULL, dan enum class menyediakan enum yang terlingkup serta aman secara tipe. Gunakan ketiganya secara bawaan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Range-based for, nullptr, dan enum class” gratis?

Ya — teks lengkap “Range-based for, nullptr, dan enum class” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Range-based for, nullptr, dan enum class”?

Gunakan kemudahan C++11: range-based for, nullptr, dan enum bertipe kuat Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Range-based for, nullptr, dan enum class” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. auto, decltype, dan Deduksi Tipe
  2. Range-based for, nullptr, dan enum class
  3. Ekspresi Lambda: Capture, Mutable, Generik
  4. Structured Bindings dan if-init C++17
← Kembali ke C++ Academy