C++ Academy · Pelajaran

Fungsi Ahli const

Tandakan kaedah baca sahaja

Pelajaran 2 daripada 413 langkah

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.

Percuma untuk bermula

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

  1. Pemboleh Ubah dan Parameter const
  2. Fungsi Ahli const
  3. constexpr dan Masa Kompilasi
  4. consteval dan constinit
← Kembali ke C++ Academy