Menggunakan Pembina Kelas Asas dan Operator Tugasan dalam C Inheritance
Dalam pengaturcaraan berorientasikan objek, warisan ialah teknik yang membolehkan penciptaan kelas baharu (kelas terbitan) daripada kelas sedia ada (kelas asas). Kelas terbitan mewarisi sifat dan kaedah kelas asas, berpotensi melanjutkan atau mengubah suai fungsinya.
Andaikan kita mempunyai kelas asas B dengan set pembina dan pengendali tugasan. Kami ingin mencipta kelas D yang mewarisi yang mengatasi fungsi foo(), tetapi ingin mengekalkan pembina dan pengendali tugasan yang sama seperti B. Ini menimbulkan persoalan sama ada perlu menulis semula fungsi ini sepenuhnya dalam D.
Nasib baik, terdapat penyelesaian yang membolehkan kami menggunakan pembina dan pengendali tugasan kelas asas:
Dalam kelas terbitan D, kita boleh memanggil pembina dan pengendali tugasan kelas asas B secara eksplisit semasa pemulaan dan penugasan objek. Contohnya:
<code class="cpp">class D : public B { ... public: D(const D& d) : B(d) // Call the base class copy constructor { ... } D& operator=(const D& d) { B::operator=(d); // Call the base class assignment operator ... return *this; } };</code>
Walaupun kelas terbitan tidak mentakrifkan pembina atau pengendali tugasan secara eksplisit, pengkompil secara tersirat akan menjana fungsi ini berdasarkan definisi kelas asas. Oleh itu, adalah mungkin untuk menggunakan pembina kelas asas dan pengendali tugasan tanpa menggunakan mereka secara eksplisit. Walau bagaimanapun, secara eksplisit memanggil fungsi kelas asas dianggap sebagai amalan yang baik untuk kejelasan dan kawalan.
Ringkasnya, dengan menggunakan keupayaan untuk memanggil pembina kelas asas dan pengendali tugasan secara eksplisit, kita boleh mewarisi tingkah laku pembina dan tugasan secara eksplisit. kelas asas tanpa perlu menulis semula mereka dalam kelas terbitan. Ini mengekalkan antara muka yang diingini dan memudahkan proses pembangunan.
Atas ialah kandungan terperinci Adakah saya perlu menulis semula pembina dan pengendali tugasan dalam kelas terbitan dalam warisan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!