Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengisytiharkan dan memanggil fungsi maya dalam C++?

Bagaimana untuk mengisytiharkan dan memanggil fungsi maya dalam C++?

WBOY
WBOYasal
2024-04-12 16:03:021176semak imbas

Fungsi maya ialah mekanisme polimorfisme yang membenarkan kelas terbitan mengatasi fungsi ahli kelas asasnya: Pengisytiharan: Tambah kata kunci maya sebelum nama fungsi. Panggilan: Menggunakan penuding atau rujukan kelas asas, pengkompil akan secara dinamik mengikat pelaksanaan yang sesuai bagi kelas terbitan. Kes praktikal: Dengan mentakrifkan kelas asas Bentuk dan kelas terbitannya Segiempat dan Bulatan, aplikasi fungsi maya dalam polimorfisme ditunjukkan untuk mengira luas dan melukis bentuk.

C++ 中如何声明和调用虚函数?

Fungsi maya dalam C++

Fungsi maya ialah mekanisme polimorfisme yang membenarkan kelas terbitan mengatasi fungsi ahli kelas asasnya. Ini membolehkan pengaturcara mentakrifkan gelagat biasa dalam kelas asas sambil masih membenarkan kelas terbitan menyediakan pelaksanaan khusus contoh bagi gelagat tersebut.

Mengisytiharkan fungsi maya

Untuk mengisytiharkan fungsi maya, letakkan kata kunci virtual pada permulaan nama fungsi. Contohnya:

class Base {
public:
    virtual void print() const;
};

Panggil fungsi maya

Panggil fungsi maya, menggunakan penuding atau rujukan kelas asas. Pengkompil akan secara dinamik mengikat pelaksanaan yang sesuai bagi kelas terbitan. Contohnya:

void doSomething(Base* base) {
    base->print();
}

Kes praktikal

Berikut ialah contoh penggunaan fungsi maya:

#include <iostream>

class Shape {
public:
    virtual double area() const = 0;
    virtual void draw() const = 0;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    
    double area() const override { return width_ * height_; }
    void draw() const override { std::cout << "Drawing rectangle" << std::endl; }
    
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    
    double area() const override { return 3.14 * radius_ * radius_; }
    void draw() const override { std::cout << "Drawing circle" << std::endl; }
    
private:
    double radius_;
};

int main() {
    Shape* rectangle = new Rectangle(5, 10);
    Shape* circle = new Circle(5);
    
    std::cout << rectangle->area() << std::endl; // Output: 50
    std::cout << circle->area() << std::endl;   // Output: 78.5
    
    rectangle->draw();   // Output: Drawing rectangle
    circle->draw();     // Output: Drawing circle
    
    return 0;
}

Atas ialah kandungan terperinci Bagaimana untuk mengisytiharkan dan memanggil fungsi maya 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