Memahami Polimorfisme dan Menghiris dalam C
Polymorphism, konsep asas dalam pengaturcaraan berorientasikan objek, membenarkan objek daripada jenis yang berbeza untuk dianggap sebagai objek daripada jenis biasa. Walau bagaimanapun, dalam C , konsep ini boleh disertai dengan fenomena yang tidak diingini dikenali sebagai penghirisan.
Coretan kod yang diberikan menunjukkan contoh polimorfisme dan penghirisan:
#include <iostream> using namespace std; class Animal { public: virtual void makeSound() { cout << "rawr" << endl; } }; class Dog : public Animal { public: virtual void makeSound() { cout << "bark" << endl; } }; int main() { Animal animal; animal.makeSound(); Dog dog; dog.makeSound(); Animal badDog = Dog(); badDog.makeSound(); Animal* goodDog = new Dog(); goodDog->makeSound(); }
Apabila dilaksanakan, kod ini secara mengejutkan mengeluarkan "rawr", "bark", "rawr", dan "bark". Ini kerana menghiris. Apabila "badDog" dimulakan dengan objek "Anjing", hanya bahagian "Haiwan" objek "Anjing" disalin ke "badDog." Oleh itu, "badDog" kekal sebagai "Haiwan" dan tidak boleh mengakses gelagat "Anjing".
Dalam C , tidak seperti bahasa seperti Java atau C# di mana penyalinan berasaskan nilai memulakan rujukan, semantik nilai digunakan. Menyalin objek kelas mencipta salinan objek yang berasingan dengan memori yang diperuntukkan sendiri, yang membawa kepada penghirisan. Untuk mencapai gelagat polimorfik, penunjuk atau rujukan harus digunakan dalam C dan bukannya memberikan secara langsung satu jenis objek kepada yang lain.
Atas ialah kandungan terperinci Bagaimanakah Menghiris Mempengaruhi Gelagat Polimorfik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!