Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah warisan mencapai polimorfisme dalam C++?

Bagaimanakah warisan mencapai polimorfisme dalam C++?

WBOY
WBOYasal
2024-06-01 13:10:57282semak imbas

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.

C++ 中继承如何实现多态性?

Bagaimana untuk melaksanakan polimorfisme melalui pewarisan dalam C++

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:

  • Haiwan ialah kelas asas.
  • Animal 是基类。
  • DogCat 是派生类。
  • makeSound 是一个虚函数,在派生类中重写。
  • animal 是一个指向派生类对象的基类指针。

当调用 animal->makeSound() 时,会调用派生类(Cat)中重写的 makeSoundAnjing dan 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn