Rumah > pembangunan bahagian belakang > C++ > Mengapakah `const int operator[](const int index) const` diutamakan daripada `int operator[](const int index) const` untuk jenis bukan kelas dalam C ?

Mengapakah `const int operator[](const int index) const` diutamakan daripada `int operator[](const int index) const` untuk jenis bukan kelas dalam C ?

DDD
Lepaskan: 2024-10-30 13:26:35
asal
660 orang telah melayarinya

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` for non-class types in 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() {}
Salin selepas log masuk

dan

const int foo() {}
Salin selepas log masuk

ditafsirkan sebagai int. Walau bagaimanapun, apabila mengembalikan rujukan, const menjadi bukan peringkat atas dan membuat perbezaan yang ketara:

int& operator[](int index);
Salin selepas log masuk

dan

int const& operator[](int index) const;
Salin selepas log masuk

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
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan