Fungsi Ahli const
Tandakan kaedah baca sahaja
Fungsi Ahli const ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Maksud Fungsi Ahli const
Fungsi ahli yang ditandakan sebagai const menjanjikan bahawa ia tidak akan mengubah keadaan objek yang boleh diperhatikan. Kata kunci tersebut diletakkan selepas senarai parameter.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; } // read-only
void inc() { ++n; }
};
int main() {
Counter c;
c.inc();
std::cout << c.value() << "\n";
}Objek const Memanggil Kaedah const
Pada objek const, anda hanya boleh memanggil fungsi ahli const. Kaedah bukan const dilarang.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; }
void inc() { ++n; }
};
int main() {
const Counter c;
std::cout << c.value() << "\n"; // OK
// c.inc(); // ERROR
}this Menjadi const
Di dalam fungsi ahli const, this ialah penuding kepada const, jadi pengkompil menolak sebarang cubaan untuk mengubah ahli.
Tandakan Setiap Kaedah Baca Sahaja sebagai const
Fungsi pengambil, pertanyaan dan pencetak semuanya hendaklah const. Dengan ini, fungsi tersebut boleh berfungsi pada objek const dan rujukan const.
Lebihan Muatan const
Anda boleh menyediakan versi const dan bukan const bagi sesuatu kaedah; pengkompil memilihnya berdasarkan sama ada objek itu const.
#include <iostream>
#include <vector>
class Box {
std::vector<int> v{1, 2, 3};
public:
int& at(int i) { return v[i]; } // mutable access
const int& at(int i) const { return v[i]; } // read-only access
};
int main() {
Box b;
b.at(0) = 99;
std::cout << b.at(0) << "\n";
}Kata Kunci mutable
Ahli mutable boleh berubah walaupun di dalam kaedah const — berguna untuk cache atau pembilang yang bukan sebahagian daripada keadaan logik.
#include <iostream>
class Cache {
mutable int hits = 0;
int data = 42;
public:
int get() const { ++hits; return data; } // hits is mutable
int hitCount() const { return hits; }
};
int main() {
Cache c;
c.get(); c.get();
std::cout << c.hitCount() << "\n";
}const Logik berbanding const Fizikal
const melindungi keadaan logik objek; mutable membolehkan butiran pelaksanaan seperti cache berubah tanpa memungkiri janji tersebut.
Kaedah const dan Rujukan const
Fungsi yang menerima const& hanya boleh memanggil kaedah const padanya — satu lagi sebab untuk menandakan fungsi pertanyaan sebagai const.
#include <iostream>
class Counter {
int n = 5;
public:
int value() const { return n; }
};
void report(const Counter& c) {
std::cout << c.value() << "\n"; // needs value() to be const
}
int main() { Counter c; report(c); }Memulangkan Rujukan const
Fungsi pengakses const sering memulangkan const& untuk mendedahkan ahli tanpa membenarkan pengubahsuaian atau penyalinan.
Jangan Buang const dengan Cast
Menggunakan const_cast untuk mengubah objek yang benar-benar const ialah tingkah laku tidak ditakrifkan. Sebaliknya, gunakan mutable untuk pengecualian yang sah.
Kelas dengan Ketepatan const
Kelas yang direka dengan baik menandakan setiap kaedah yang tidak mengubah keadaan sebagai const, supaya kelas itu berfungsi dengan lancar dalam konteks const di seluruh program.
Semakan Pantas
Uji pemahaman anda tentang fungsi ahli const.
Ringkasan
Anda telah mempelajari cara menandakan kaedah baca sahaja sebagai const, bahawa objek const hanya memanggil kaedah const, cara melakukan lebihan muatan berdasarkan const, serta cara mutable membenarkan perubahan pada butiran pelaksanaan. Elakkan const_cast; reka kelas dengan ketepatan const sejak awal.
Pelajari C++ dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Fungsi Ahli const” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Fungsi Ahli const”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Fungsi Ahli const”?
Tandakan kaedah baca sahaja Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Fungsi Ahli const” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pemboleh Ubah dan Parameter const
- Fungsi Ahli const
- constexpr dan Masa Kompilasi
- consteval dan constinit