Rumah >pembangunan bahagian belakang >C++ >Mengapakah Menggunakan `const` dalam Copy Constructors Dianggap sebagai Amalan Baik?
Objek Salinan dan const: Penjelasan Lebih Dalam
Dalam C , apabila mentakrifkan kelas, secara amnya disyorkan untuk mematuhi Peraturan daripada Tiga, yang mencadangkan pelaksanaan pembina salinan, pengendali tugasan dan pemusnah. Pembina salinan bertanggungjawab untuk mencipta objek baharu dengan menyalin data daripada objek sedia ada.
Menggunakan const dalam Copy Constructors
Secara tradisinya, ia dianggap sebagai amalan yang baik untuk digunakan const sebagai jenis hujah bagi pembina salinan, seperti dalam contoh berikut:
<code class="cpp">class ABC { public: int a; int b; ABC(const ABC &other) { a = other.a; b = other.b; } };</code>
Apa Yang Berlaku Tanpa const?
Jika kita meninggalkan kelayakan const, sebagai ditunjukkan di bawah, beberapa isu timbul:
<code class="cpp">class ABC { public: int a; int b; ABC(ABC &other) { a = other.a; b = other.b; } };</code>
Pertama, menjadi mustahil untuk membuat salinan objek const. Oleh kerana hujah tidak ditandakan sebagai const, ia hanya boleh menerima objek bukan const. Oleh itu, kita tidak boleh memulakan objek baharu daripada rujukan const.
Kedua, ketiadaan const membayangkan bahawa objek hujah boleh diubah suai dalam pembina salinan. Ini secara amnya tidak diingini, kerana tujuan pembina salinan adalah untuk mencipta salinan yang sama bagi objek sedia ada. Mengubah suai objek asal semasa penyalinan boleh membawa kepada tingkah laku yang tidak dijangka dan berkemungkinan tidak betul.
Sebab Menggunakan Argumen const
Terdapat beberapa sebab yang menarik untuk menggunakan argumen const dalam pembina salinan :
Kesimpulannya, menggunakan hujah const dalam pembina salinan menawarkan kelebihan yang ketara, termasuk ketepatan logik, kebolehubah objek dan keserasian dengan objek sementara. Walaupun mungkin terdapat kes luar biasa di mana hujah bukan const adalah sesuai, pengesyoran umum kekal untuk menggunakan const.
Atas ialah kandungan terperinci Mengapakah Menggunakan `const` dalam Copy Constructors Dianggap sebagai Amalan Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!