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!