Dalam C++, polimorfisme dicapai melalui pewarisan, membenarkan objek mempunyai gelagat yang berbeza walaupun mereka mempunyai kelas asas biasa yang sama. Warisan ialah kaedah mencipta kelas baharu di mana kelas baharu (kelas terbitan) mewarisi ahli daripada kelas sedia ada (kelas asas) dan boleh menambah ahli baharu. Apabila fungsi maya dipanggil menggunakan penunjuk atau rujukan jenis kelas terbitan, kaedah ganti dalam kelas terbitan dipanggil.
Apakah itu polimorfisme?
Polymorphism membolehkan objek mempunyai gelagat yang berbeza walaupun mereka mempunyai kelas asas yang sama. Dalam C++, polimorfisme dicapai menggunakan warisan.
Warisan
Warisan ialah kaedah mencipta kaedah baharu kelas, di mana kelas baharu (kelas terbitan) mewarisi daripada kelas sedia ada (kelas asas). Kelas terbitan mewarisi semua ahli (data dan fungsi) kelas asas dan juga boleh menambah ahli baharunya sendiri.
Bagaimanakah polimorfisme dicapai melalui pewarisan?
Dalam polimorfisme, objek kelas terbitan boleh mempunyai penunjuk atau rujukan kepada jenis kelas asasnya. Apabila fungsi maya dipanggil menggunakan penunjuk atau rujukan jenis kelas terbitan, kaedah ganti dalam kelas terbitan dipanggil.
Contoh:
class Animal { public: virtual void makeSound() { cout << "Animal makes a sound" << endl; } }; class Dog : public Animal { public: void makeSound() override { cout << "Woof woof!" << endl; } }; class Cat : public Animal { public: void makeSound() override { cout << "Meow meow!" << endl; } }; int main() { Animal* animal = new Cat(); // 指向 Cat 对象的 Animal 指针 animal->makeSound(); // 输出 "Meow meow!" }
Dalam contoh di atas:
Animal
是基类。Dog
和 Cat
是派生类。makeSound
是一个虚函数,在派生类中重写。animal
是一个指向派生类对象的基类指针。当调用 animal->makeSound()
时,会调用派生类(Cat
)中重写的 makeSound
Kucing
ialah kelas terbitan.
makeSound
ialah fungsi maya, ditindih dalam kelas terbitan. 🎜haiwan
ialah penunjuk kelas asas yang menunjuk ke objek kelas terbitan. 🎜Apabila memanggil animal->makeSound()
, makeSoundCat
) akan dipanggil . /code> kaedah, keluarkan "Meow meow!". 🎜Atas ialah kandungan terperinci Bagaimanakah warisan mencapai polimorfisme dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!