Merepresentasikan Ketiadaan dengan optional
Hindari pointer null
Merepresentasikan Ketiadaan dengan optional adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Masalah dengan Null
Mengembalikan penanda khusus seperti -1 atau penunjuk null untuk menyatakan "tidak ada nilai" bersifat rapuh dan mudah disalahgunakan. std::optional<T> secara eksplisit menyatakan "sebuah nilai, atau tidak ada apa-apa". Sertakan <optional>.
#include <iostream>
#include <optional>
int main() {
std::optional<int> maybe = 42;
std::cout << *maybe << "\n";
}Optional Kosong
Mengonstruksi optional secara bawaan, atau menetapkan std::nullopt, menghasilkan optional kosong yang tidak menyimpan nilai.
#include <iostream>
#include <optional>
int main() {
std::optional<int> empty;
std::optional<int> also = std::nullopt;
std::cout << empty.has_value() << " " << also.has_value() << "\n";
}Memeriksa Keberadaan Nilai
Panggil has_value() atau gunakan optional secara langsung dalam konteks boolean untuk menguji apakah optional tersebut berisi sesuatu.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 5;
if (o) std::cout << "has value\n";
if (o.has_value()) std::cout << "yes\n";
}Optional sebagai Tipe Pengembalian
Fungsi yang mungkin gagal menghasilkan hasil sangat cocok menggunakan tipe ini. Kembalikan nilainya saat berhasil, dan std::nullopt saat gagal.
#include <iostream>
#include <optional>
std::optional<int> half(int n) {
if (n % 2 == 0) return n / 2;
return std::nullopt;
}
int main() {
auto r = half(10);
if (r) std::cout << *r << "\n";
}Membaca Nilai
Gunakan *opt atau opt.value() setelah Anda mengetahui bahwa optional tersebut memiliki nilai. Dereferensi optional kosong dengan * merupakan perilaku tidak terdefinisi.
#include <iostream>
#include <optional>
int main() {
std::optional<std::string_view> name = "Ada";
if (name) std::cout << *name << "\n";
}Signature yang Menjelaskan Diri
Tipe pengembalian std::optional langsung memberi tahu pemanggil bahwa fungsi mungkin tidak menghasilkan hasil; komentar tidak diperlukan.
#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> getEnvName(bool present) {
if (present) return std::string("CONFIG");
return std::nullopt;
}
int main() { std::cout << getEnvName(true).has_value() << "\n"; }Mengosongkan Optional
Panggil reset() untuk mengosongkan optional kembali, atau tetapkan std::nullopt.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 99;
o.reset();
std::cout << o.has_value() << "\n"; // 0
}Mengonstruksi di Tempat
emplace mengonstruksi nilai yang dikandung langsung di dalam optional sehingga menghindari penyalinan tambahan.
#include <iostream>
#include <optional>
#include <string>
int main() {
std::optional<std::string> o;
o.emplace("built in place");
std::cout << *o << "\n";
}Optional dibandingkan dengan Penunjuk
Penunjuk mentah dapat bernilai null, tetapi tidak memberi informasi tentang kepemilikan dan berisiko menjadi penunjuk yang menggantung. Optional memiliki nilainya sendiri dan dengan jelas menandakan "mungkin tidak ada" tanpa alokasi heap.
Optional Referensi?
std::optional menyimpan nilai, bukan referensi. Untuk merujuk secara opsional ke objek yang sudah ada, simpan penunjuk atau gunakan std::optional<std::reference_wrapper<T>>.
Kapan Menggunakan Optional
Gunakan untuk pencarian yang mungkin tidak menemukan hasil, penguraian yang mungkin gagal, atau pengaturan yang mungkin belum ditetapkan. Pelajaran berikutnya membahas cara aman untuk mengakses nilai yang dikandung.
Pemeriksaan Singkat
Periksa pemahaman Anda tentang std::optional.
Rangkuman
Anda telah mempelajari dasar-dasar std::optional:
- Menyatakan "sebuah nilai atau tidak ada apa-apa" tanpa penanda khusus atau null.
- Kosong melalui konstruksi bawaan atau
std::nullopt. - Periksa dengan
has_value()atau pengujian boolean. - Ideal sebagai tipe pengembalian untuk pencarian yang dapat gagal.
Belajar C++ dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Merepresentasikan Ketiadaan dengan optional” gratis?
Ya — teks lengkap “Merepresentasikan Ketiadaan dengan optional” 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 “Merepresentasikan Ketiadaan dengan optional”?
Hindari pointer null 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 1 dari 4.
Berapa lama pelajaran “Merepresentasikan Ketiadaan dengan optional” 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
- Merepresentasikan Ketiadaan dengan optional
- Mengakses Nilai optional
- Dasar-Dasar std::expected
- Pola Penanganan Error