Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Konst Peringkat Atas pada Jenis Pulangan Bukan Kelas Nampak Berlebihan?

Mengapa Konst Peringkat Atas pada Jenis Pulangan Bukan Kelas Nampak Berlebihan?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 07:56:02931semak imbas

Why Does Top-Level Const on Non-Class Return Types Seem Redundant?

Adakah Jenis Pulangan Bukan Kelas Mendapat Manfaat daripada Const?

Dalam C , penggunaan const telah ditekankan sebagai amalan terbaik untuk tidak berubah pengendalian data. Walau bagaimanapun, nampaknya jenis pulangan bukan kelas yang layak dengan const tidak menghasilkan perbezaan yang ketara:

<code class="cpp">int foo() { }
const int foo() { }</code>

Kalau begitu, mengapa perbezaan ini wujud, seperti yang ditunjukkan oleh kelas Bigint:

<code class="cpp">int& operator[](const int index);
const int operator[](const int index) const;</code>

Penjelasan:

Kelayakan const peringkat atas yang digunakan pada jenis pemulangan fungsi bukan kelas diabaikan dengan berkesan, menjadikan kedua-dua pengisytiharan di atas adalah sama. Walau bagaimanapun, ini tidak berlaku untuk rujukan:

<code class="cpp">int& operator[](int index);
int const& operator[](int index) const;</code>

Dalam senario sedemikian, perbezaan adalah bermakna.

Selain itu, kelayakan const peringkat atas pada jenis pemulangan juga diabaikan dalam pengisytiharan fungsi .

Perkaitan kelayakan const juga meliputi jenis pulangan kelas. Jika fungsi mengembalikan T const, sebarang percubaan untuk menggunakan fungsi bukan const pada objek yang dikembalikan akan mengakibatkan ralat, seperti yang digambarkan di bawah:

<code class="cpp">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</code>

Atas ialah kandungan terperinci Mengapa Konst Peringkat Atas pada Jenis Pulangan Bukan Kelas Nampak Berlebihan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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