Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah kelebihan fungsi C++ mencapai polimorfisme?

Bagaimanakah kelebihan fungsi C++ mencapai polimorfisme?

PHPz
PHPzasal
2024-04-13 12:21:01627semak imbas

Pembebanan fungsi boleh digunakan untuk mencapai polimorfisme, iaitu, memanggil kaedah kelas terbitan melalui penuding kelas asas, dan pengkompil memilih versi terlebih beban berdasarkan jenis parameter sebenar. Dalam contoh, kelas Animal mentakrifkan fungsi makeSound() maya dan kelas Dog dan Cat mengatasi fungsi ini Apabila makeSound() dipanggil melalui penunjuk Animal*, pengkompil akan memanggil versi ganti yang sepadan berdasarkan objek yang ditunjuk. jenis, dengan itu mencapai polimorfisme seks.

C++ 函数重载如何实现多态性?

Bagaimanakah lebihan fungsi C++ mencapai polimorfisme

Apakah fungsi lebihan beban?

Function overloading ialah teknik pengaturcaraan yang mentakrifkan berbilang fungsi dengan nama yang sama tetapi jenis atau nombor parameter berbeza dalam skop yang sama.

Bagaimana untuk menggunakan lebihan fungsi untuk mencapai polimorfisme?

Polymorphism ialah ciri yang membenarkan memanggil kaedah kelas terbitan melalui penuding atau rujukan kelas asas. Hubungan antara lebihan fungsi dan polimorfisme dalam C++ adalah seperti berikut:

  • Lebih muatan fungsi membolehkan penciptaan berbilang versi fungsi dengan nama yang sama tetapi tandatangan yang berbeza (jenis atau nombor parameter).
  • Apabila kaedah kelas terbitan dipanggil melalui penuding atau rujukan kelas asas, pengkompil memilih versi terlebih muatan untuk dipanggil berdasarkan jenis hujah sebenar.

Contoh praktikal

Kod berikut menunjukkan cara menggunakan lebihan fungsi untuk mencapai polimorfisme:

#include <iostream>

class Animal {
public:
    virtual void makeSound() {  // 声明为虚函数
        std::cout << "Animal sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {  // 重写 makeSound()
        std::cout << "Woof woof" << std::endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {  // 重写 makeSound()
        std::cout << "Meow meow" << std::endl;
    }
};

int main() {
    Animal* animalptr;  // 基类指针

    // 指向 Dog 对象
    animalptr = new Dog();
    animalptr->makeSound();  // 调用 Dog::makeSound()

    // 指向 Cat 对象
    animalptr = new Cat();
    animalptr->makeSound();  // 调用 Cat::makeSound()

    delete animalptr;

    return 0;
}

Output:

Woof woof
Meow meow

Atas ialah kandungan terperinci Bagaimanakah kelebihan fungsi C++ mencapai polimorfisme?. 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