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
612 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!

sumber:php.cn
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