Rumah > Artikel > pembangunan bahagian belakang > Mengapakah `const int operator[](const int index) const` diutamakan daripada `int operator[](const int index) const` untuk jenis bukan kelas dalam C ?
Kepentingan Mengembalikan Const untuk Jenis Bukan Kelas
Soalan:
Dalam C , mengapa kita perlu menggunakan const int operator[](const int index) const dan bukannya int operator[](const int index) const?
Jawapan:
Untuk jenis bukan kelas, kelayakan const peringkat atas pada jenis pulangan diabaikan. Ini bermakna jenis pemulangan kedua-duanya:
int foo() {}
dan
const int foo() {}
ditafsirkan sebagai int. Walau bagaimanapun, apabila mengembalikan rujukan, const menjadi bukan peringkat atas dan membuat perbezaan yang ketara:
int& operator[](int index);
dan
int const& operator[](int index) const;
adalah berbeza.
Begitu juga , untuk nilai pulangan jenis kelas, pengembalian T const menghalang pemanggil daripada memanggil fungsi bukan const pada nilai yang dikembalikan:
class Test { public: void f(); void g() const; }; Test ff(); Test const gg(); ff().f(); // legal ff().g(); // legal gg().f(); // illegal gg().g(); // legal
Atas ialah kandungan terperinci Mengapakah `const int operator[](const int index) const` diutamakan daripada `int operator[](const int index) const` untuk jenis bukan kelas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!