Rumah >pembangunan bahagian belakang >C++ >Mengapa Anda Tidak Perlu Mewarisi daripada std::string dalam C ?
Mengapa Seseorang Harus Mengelakkan diri daripada Mendapatkan daripada std::string
Dalam bukunya Effective C , Scott Meyers menasihatkan agar tidak menggunakan std: : kelas rentetan, terutamanya disebabkan oleh kekurangan pemusnah maya. Walau bagaimanapun, ini bukan satu-satunya sebab untuk mengelakkan warisan tersebut.
Mentakrifkan Kriteria untuk Warisan
Untuk berfungsi sebagai kelas asas yang sesuai, kelas mesti:
std::rentetan sebagai Kelas Asas
std::string gagal memenuhi kriteria ini atas sebab berikut:
Selain itu, walaupun dalam senario di mana warisan adalah semata-mata untuk kebolehgunaan semula, C tidak mempunyai mekanisme untuk menghalang pelanggan daripada mencipta objek kelas terbitan menggunakan penunjuk kelas asas. Ini boleh melanggar tujuan yang dimaksudkan untuk menyekat penggunaan sedemikian.
Akibat Pelanggaran Warisan
Mengabaikan garis panduan ini boleh mengakibatkan kod iaitu:
Kesimpulannya, pewarisan dalam C hendaklah dikhaskan untuk situasi polimorfik, dan std::string tidak boleh digunakan sebagai kelas asas kerana kekangan reka bentuk dan masalah penghirisan. Menggunakan kaedah alternatif seperti fungsi atau gubahan bukan ahli menggalakkan amalan C idiomatik dan memastikan kejelasan dan kebolehpercayaan kod.
Atas ialah kandungan terperinci Mengapa Anda Tidak Perlu Mewarisi daripada std::string dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!