Dokumentasi C++
Referensi C++ yang ringkas dan penuh contoh. Baca konsepnya, lihat kodenya, lalu praktikkan di perjalanan Coddy.
Mulai kursusMemulai
- Apa itu C++Apa sebenarnya C++ itu, kenapa ia dikompilasi langsung menjadi kode mesin native, dan jenis software berperforma tinggi apa saja yang dibangun dengannya.
- Hello WorldPenjelasan program Hello World C++ baris demi baris: #include <iostream>, int main(), std::cout dan <<, std::endl dibandingkan '\n', return 0, plus cara meng-compile-nya dan memperbaiki error pertama yang biasa ditemui pemula.
- Install C++Cara memasang compiler C++ (GCC, Clang, atau MSVC), memilih toolchain untuk sistem operasimu, dan memastikan compiler itu berfungsi dari command line.
- Compile C++Cara C++ mengubah source .cpp menjadi executable native: compile dengan g++ (atau clang++/MSVC), jalankan binary-nya, dan baca error compiler saat terjadi masalah.
- Sintaks C++Aturan sintaks inti program C++, yaitu pernyataan dan titik koma, blok kurung kurawal, fungsi main, dan cara kerja output, dijelaskan dari program pertama.
- KomentarCara menulis komentar di C++, yaitu catatan satu baris // dan blok banyak baris /* */, plus cara menonaktifkan kode dengan komentar, kenapa komentar blok tidak bisa bersarang, dan komentar seperti apa yang layak dipertahankan.
Variabel & Tipe
- VariabelCara kerja variabel di C++: mendeklarasikan dengan tipe, perbedaan penugasan dan inisialisasi, inisialisasi kurung kurawal, aturan penamaan, dan scope yang menentukan di mana variabel hidup dan mati.
- Tipe DataTur praktis tipe data dasar C++, yaitu bilangan bulat, floating-point, char, dan bool, plus ukurannya, signed vs unsigned, literal dan sufiks, overflow, dan cara memilih tipe yang tepat.
- Kata Kunci autoCara kata kunci `auto` membiarkan compiler menyimpulkan tipe variabel untukmu: apa yang ia buang, di mana ia unggul, dan jebakan yang sering menjebak pemula.
- Konstanta & constCara mendeklarasikan nilai read-only di C++ dengan const, perbedaan const dan constexpr, const pointer vs pointer ke const, dan const member function.
- OperatorPelajari operator C++: aritmatika, perbandingan, logika, penugasan, dan bitwise, plus jebakan seputar pembagian integer, prioritas operator, dan short-circuit.
- Type castingCara kerja type casting di C++: konversi implisit, jebakan pembagian integer, dan empat cast bernama (static_cast, const_cast, reinterpret_cast, dynamic_cast), plus jebakan yang menyebabkan data hilang diam-diam.
Alur Kontrol
- if-elseCara membuat keputusan di C++ dengan if, else if, dan else: kondisi, merangkai cabang, percabangan bersarang, operator ternary, if dengan initializer, dan jebakan yang sering membuat orang tersandung.
- switchPernyataan switch di C++ dijelaskan: label case, break dan fall-through, cabang default, mengelompokkan case, switch pada enum, serta jebakan seputar deklarasi di dalam case.
- for loopCara mengulang kode dengan for loop C++: header tiga bagian, menghitung naik dan turun, perulangan pada array, loop bersarang, break dan continue, serta bug off-by-one dan unsigned yang menjebak semua orang.
- While loopWhile loop di C++ dijelaskan: while yang mengecek kondisi lebih dulu, do-while yang berjalan minimal sekali, perulangan sampai nilai sentinel, break dan continue, serta cara menghindari infinite loop.
- Range-based forRange-based for loop di C++ dijelaskan: perulangan yang rapi pada array, vector, string, dan map, kenapa kamu sebaiknya memakai auto& dan const auto&, serta jebakan penyalinan dan iterator invalidation yang perlu dihindari.
Fungsi
- FungsiCara menulis fungsi di C++: anatomi tipe kembalian/nama/parameter, deklarasi vs definisi, mengembalikan nilai, fungsi void, dan jebakan seperti return yang hilang dan lupa menulis prototype.
- Parameter FungsiCara argumen masuk ke fungsi C++: pass by value vs pass by reference, referensi const untuk akses read-only yang murah, argumen default, pointer, dan jebakan biaya salinan yang diam-diam memperlambat program.
- ReferenceReference di C++ dijelaskan: bagaimana & pada parameter membuat alias, kenapa pass by reference menghindari penyalinan dan membuat fungsi bisa mengubah variabel milik pemanggilnya, serta kapan memakai const& dan reference dibanding mengembalikan nilai.
- Function OverloadingFunction overloading C++ membuat beberapa fungsi bisa memakai satu nama asalkan daftar parameternya berbeda. Pelajari cara overload resolution memilih yang cocok, kenapa tipe kembalian saja tidak dihitung, serta jebakan ambiguitas dan argumen default yang perlu dihindari.
- LambdaTulis fungsi kecil inline secara langsung dengan lambda C++: sintaksnya, cara kerja capture, kapan memakai `mutable`, dan jebakan capture yang dangling yang menjebak semua orang.
Pointer & Memori
- PointerPointer di C++ dijelaskan dari awal: mendeklarasikan pointer, operator address-of & dan dereference *, nullptr, pointer ke array, serta jebakan dangling pointer dan pointer yang belum diinisialisasi yang bikin program crash.
- Reference vs pointerPerbandingan praktis reference dan pointer di C++: persamaannya, perbedaannya (pengikatan ulang, null, aritmatika), dan aturan jelas untuk memilih salah satunya di kode sehari-hari.
- Memori DinamisCara mengalokasikan memori saat program berjalan dengan `new`, membebaskannya dengan `delete`, dan menghindari kebocoran memori, dangling pointer, serta double free yang muncul saat mengelola heap secara manual.
- Smart pointerSmart pointer memiliki memori heap dan membebaskannya secara otomatis. Pelajari `unique_ptr`, `shared_ptr`, `make_unique`, dan `make_shared`, dan kenapa kamu hampir tidak perlu menulis `new`/`delete` lagi.
String & I/O
- StringCara memakai `std::string` di C++: membuat, menggabungkan, mencari, dan memotong teks dengan aman, plus kenapa kamu hampir tidak pernah butuh `char*` mentah untuk pekerjaan sungguhan.
- Input & OutputCara kerja I/O konsol di C++: mencetak dengan cout, membaca dengan cin, bug klasik baris baru saat getline dipakai setelah cin, dan cara memulihkan input yang gagal.
- std::getlineCara std::getline membaca satu baris penuh ke dalam std::string: memakainya dengan cin, kenapa ia mengembalikan string kosong setelah cin >>, perbaikan dengan cin.ignore dan std::ws, delimiter sendiri, dan membaca file baris demi baris sampai akhir file.
- String streamCara memakai std::stringstream, istringstream, dan ostringstream untuk mem-parsing teks, memecah string berdasarkan spasi, mengonversi antara string dan angka, dan menyusun string terformat di memori.
Container STL
- ArrayPenjelasan array mentah di C++: cara mendeklarasikan dan menginisialisasinya, memakai indeks dengan aman, melakukan perulangan dengan ukurannya, jebakan array yang meluruh menjadi pointer, dan kenapa std::array dan vector biasanya lebih baik.
- vectorstd::vector adalah array C++ yang ukurannya bisa berubah, container yang sebaiknya kamu pakai secara default. Pelajari cara membuat, mengakses, memperbesar, dan menelusuri vector, plus jebakan iterator invalidation dan akses di luar batas.
- mapPenjelasan std::map C++: container key-value yang terurut dengan pencarian logaritmik. Sisipkan, cari, telusuri, dan hindari jebakan klasik operator[] yang diam-diam menyisipkan key.
- unordered_mapPelajari std::unordered_map di C++, saudara map berbasis hash table yang memberi rata-rata O(1) untuk penambahan dan pencarian. Membahas operasi dasar, jebakan [] yang otomatis menambah elemen, count vs find, dan kapan memilihnya daripada map yang terurut.
- setCara std::set menyimpan nilai unik yang otomatis terurut di C++: menambah elemen, mengecek keberadaan dengan count dan find, menelusuri secara berurutan, serta perbedaan set, multiset, dan unordered_set.
- pair dan tupleCara `std::pair` dan `std::tuple` menggabungkan dua nilai atau lebih ke dalam satu objek: membuatnya, mengakses isinya, structured binding, dan kapan memakai masing-masing.
- IteratorCara kerja iterator C++ sebagai pointer umum ke dalam container: begin() dan end(), dereference, memajukan iterator, varian const/reverse, serta jebakan invalidasi dan dereference end() yang menyebabkan undefined behavior.
Algoritma STL & Template
- AlgoritmaPakai algoritma standar C++ seperti `find`, `count_if`, `transform`, `accumulate`, dan `remove` untuk mengolah range tanpa menulis loop sendiri, plus jebakan pasangan iterator dan erase-remove.
- SortingUrutkan vector dan array di C++ dengan `std::sort`: urutan default, comparator kustom, mengurutkan struct berdasarkan field, dan jebakan strict weak ordering yang bikin program crash.
- TemplateTulis kode sekali dan biarkan ia bekerja untuk semua tipe dengan template C++: function template, class template, deduksi tipe, dan error compiler membingungkan yang ditimbulkannya.
Class & Objek
- ClassPelajari cara class C++ menggabungkan data dan perilaku menjadi tipe yang bisa dipakai ulang: mendeklarasikan member variable dan method, membuat objek, pembagian public/private, serta jebakan seperti member yang belum diinisialisasi dan pointer this.
- ConstructorConstructor adalah member function khusus yang berjalan saat objek dibuat. Pelajari default constructor, parameterized constructor, copy constructor, member initializer list, dan cara agar objek tidak tertinggal setengah terinisialisasi.
- DestructorDestructor berjalan otomatis saat sebuah objek dihancurkan. Pelajari sintaks `~ClassName()`, kapan ia berjalan, kenapa ia membebaskan resource, dan Rule of Three/Five.
- PewarisanPelajari bagaimana pewarisan (inheritance) C++ membuat derived class bisa memakai ulang dan memperluas base class: sintaksnya, pewarisan public vs private, urutan constructor dan destructor, serta jebakan seperti object slicing.
- Virtual functionVirtual function membuat pointer class induk bisa memanggil versi method milik class turunan saat runtime. Pelajari `virtual`, `override`, abstract class, dan kenapa destructor class induk harus virtual.
- Operator OverloadingOperator overloading C++ membuat tipe buatanmu bisa bekerja dengan operator bawaan seperti +, ==, dan <<. Pelajari aturan member vs non-member, cara meng-overload operator perbandingan dan stream, serta jebakan seputar tipe kembalian dan operator penugasan.
- Access SpecifierCara public, private, dan protected mengatur siapa yang boleh menyentuh member sebuah class di C++. Inilah dasar enkapsulasi, lengkap dengan getter, setter, dan jalan pintas friend.
- StructStruct di C++ dijelaskan: cara menggabungkan variabel-variabel yang berkaitan menjadi satu tipe, mendeklarasikan dan menginisialisasi objek struct, memberi struct member function dan constructor, dan apa beda sebenarnya struct dengan class.
- enumPelajari enum di C++: cara mendeklarasikannya, kenapa enum class yang ber-scope lebih aman daripada enum biasa, nilai dasar sendiri, switch pada enumerator, dan konversi ke dan dari bilangan bulat.
Error & Debugging
- ExceptionException melaporkan error yang tidak bisa ditangani sebuah fungsi secara lokal. Pelajari cara `throw`, jenis-jenis exception standar, pesan `what()`, dan kenapa exception lebih unggul daripada kode kembalian untuk kegagalan yang penting.
- try-catchBungkus kode yang berisiko di dalam `try`, lalu tanggapi di `catch`. Pelajari cara menangkap exception lewat reference const, mengurutkan banyak handler, memakai `catch (...)`, dan melempar ulang tanpa membocorkan sumber daya.
- Undefined behaviorUndefined behavior (UB) adalah kode yang sama sekali tidak diatur oleh standar C++: program bisa crash, merusak data, atau kelihatan berjalan normal. Pelajari penyebab umumnya, kenapa "programnya jalan kok" tidak membuktikan apa pun, dan alat yang bisa menangkap UB.