Operator Subskrip dan Pemanggilan Fungsi
Lebihkan beban [] dan () agar tipe berperilaku seperti kontainer atau callable
Operator Subskrip dan Pemanggilan Fungsi adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
operator[] — Akses Terindeks
Bebani [] agar tipe Anda dapat digunakan seperti larik. Ini berguna untuk kontainer, matriks, dan kelas gambar.
class Vec {
std::vector<double> data_;
public:
double& operator[](size_t i) { return data_[i]; }
double operator[](size_t i) const { return data_[i]; }
};Dua Pembebanan: const dan non-const
Sediakan keduanya. Pemanggilan pada instans const akan menggunakan pembebanan const; instans non-const memungkinkan penugasan.
Pemeriksaan Batas
Secara konvensional, operator[] biasa tidak melakukan pemeriksaan batas. Sediakan metode at() terpisah yang melempar pengecualian—seperti pustaka standar.
double& at(size_t i) {
if (i >= data_.size()) throw std::out_of_range("");
return data_[i];
}Subskrip Multidimensi (C++23)
C++23 menambahkan subskrip yang dipisahkan koma: m[i, j]. Versi sebelumnya memerlukan pemanggilan fungsi atau subskrip berantai.
// C++23
double& operator[](size_t i, size_t j);
// Pre-C++23 workaround
double& operator()(size_t i, size_t j);operator() — Pemanggilan Fungsi
Bebani () agar instans dapat dipanggil. Ini digunakan untuk funktor, pengindeksan matriks, dan predikat yang dapat dikonfigurasi.
struct Square {
int operator()(int x) const { return x * x; }
};
Square sq;
std::cout << sq(5); // 25Funktor dengan Status
Operator pemanggilan fungsi dapat menggunakan variabel anggota—objek yang dapat dipanggil dan memiliki status.
struct GreaterThan {
int threshold;
bool operator()(int x) const { return x > threshold; }
};
GreaterThan over10{10};
std::cout << over10(15); // trueDigunakan dengan Algoritma STL
Berikan instans funktor kepada algoritma sebagai pengganti fungsi.
std::vector<int> v = {1, 11, 2, 22};
auto it = std::find_if(v.begin(), v.end(), GreaterThan{10});Operator dengan Banyak Argumen
[] (sebelum C++23) dan () dapat dibebani dengan jumlah argumen berapa pun. Sebelum C++23, () adalah pilihan yang lebih fleksibel untuk akses seperti matriks.
Mengembalikan Referensi atau Nilai
Kembalikan referensi agar penugasan dapat dilakukan melalui subskrip. Kembalikan nilai untuk tipe hanya-baca.
Objek Proksi
Jika operator[] perlu mengembalikan objek kompleks (seperti medan bit), kembalikan kelas proksi kecil dengan operator konversi dan penugasan.
Contoh di Dunia Nyata
Penggunaan umum:
std::vector::operator[]std::map::operator[]— menyisipkan jika kunci tidak ada- Kelas matriks:
m(i, j) - Funktor untuk algoritma
Pemeriksaan Singkat
Bagaimana Anda membuat instans sebuah kelas dapat dipanggil seperti fungsi?
Ringkasan
Bebani [] untuk akses terindeks (sediakan pembebanan const dan non-const). Bebani () agar instans dapat dipanggil—menjadi dasar funktor dan lambda.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Operator Subskrip dan Pemanggilan Fungsi” gratis?
Ya — teks lengkap “Operator Subskrip dan Pemanggilan Fungsi” 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 “Operator Subskrip dan Pemanggilan Fungsi”?
Lebihkan beban [] dan () agar tipe berperilaku seperti kontainer atau callable 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 3 dari 4.
Berapa lama pelajaran “Operator Subskrip dan Pemanggilan Fungsi” 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
- Operator Aritmetika dan Perbandingan
- Operator Penyisipan dan Ekstraksi Aliran
- Operator Subskrip dan Pemanggilan Fungsi
- Operator Perbandingan Tiga Arah C++20