Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Fungsi dan Warisan Maya C++: Memahami Misteri Pewarisan Polimorfik

Fungsi dan Warisan Maya C++: Memahami Misteri Pewarisan Polimorfik

WBOY
WBOYasal
2024-04-28 12:30:02658semak imbas

Fungsi maya dan warisan membolehkan polimorfisme dalam pengaturcaraan berorientasikan objek: Mengisytiharkan fungsi maya membenarkan kelas terbitan untuk mengatasi kaedah kelas asas dan memanggilnya berdasarkan jenis masa jalan objek. Warisan menetapkan hierarki kelas, dan kelas terbitan boleh mengakses dan melanjutkan data dan kaedah kelas asas. Warisan polimorfik membenarkan kelas terbitan untuk mewarisi daripada berbilang kelas asas, dan kebanyakan objek terbitan boleh menggunakan fungsi maya semua kelas asas. Urutan di mana fungsi maya dipanggil bergantung pada susunan di mana kelas diisytiharkan.

C++ 虚拟函数与继承:理解多态继承中的奥秘

C++ Fungsi Maya dan Warisan: Memahami Misteri Pewarisan Polimorfik

Gambaran Keseluruhan

Dalam pengaturcaraan berorientasikan objek, fungsi maya dan pewarisan adalah elemen utama polimorfisme. Fungsi maya membenarkan kelas terbitan untuk mengatasi kaedah kelas asas dan memanggil pelaksanaan yang betul pada masa jalan. Warisan mewujudkan hubungan hierarki antara kelas supaya kelas terbitan boleh mengakses dan melanjutkan data dan kaedah dalam kelas asas. Artikel ini akan menyelidiki mekanisme fungsi maya dan warisan dalam C++ dan menggambarkannya melalui kes praktikal.

Fungsi maya

Fungsi maya ialah fungsi ahli yang diisytiharkan sebagai maya. Apabila fungsi maya dipanggil daripada kelas terbitan, pelaksanaan fungsi yang betul dipanggil berdasarkan jenis masa jalan sebenar objek. virtual。当从派生类调用虚拟函数时,将根据对象的实际运行时类型调用该函数的正确实现。

声明虚拟函数:

class Base {
public:
    virtual void display() {
        cout << "Base class display" << endl;
    }
};

重写派生类中的虚拟函数:

class Derived : public Base {
public:
    virtual void display() { // 重写 display 方法
        cout << "Derived class display" << endl;
    }
};

继承

继承允许派生类从基类继承数据和方法。

继承语法:

class Derived : public Base {
    // 派生类声明
};

派生类可以访问和使用基类中的所有非私有成员,包括虚拟函数。它也可以在派生类中重写基类的虚拟函数。

多态继承

多态继承:当一个派生类从多个基类继承时。

在多态继承中,最派生类的对象可以访问和使用所有基类的虚拟函数。跨多个继承层次调用的顺序取决于类的声明顺序。

实战案例:

考虑以下代码,展示了多态继承的使用:

#include <iostream>

using namespace std;

class Shape {
public:
    virtual void draw() {
        cout << "Drawing shape" << endl;
    }
};

class Circle : public Shape {
public:
    virtual void draw() {
        cout << "Drawing circle" << endl;
    }
};

class Square : public Shape {
public:
    virtual void draw() {
        cout << "Drawing square" << endl;
    }
};

int main() {
    Shape* shapes[] = { new Circle(), new Square() };

    for (Shape* shape : shapes) {
        shape->draw();
    }

    return 0;
}

输出:

Drawing circle
Drawing square

在该例中,CircleSquare 类从基类 Shape 继承了 draw 虚拟函数。当调用 draw

Isytihar fungsi maya:🎜rrreee🎜Timpa fungsi maya dalam kelas terbitan:🎜rrreee🎜Warisan 🎜🎜Warisan membenarkan kelas terbitan mewarisi data dan kaedah daripada kelas asas . 🎜🎜Sintaks warisan:🎜rrreee🎜Kelas terbitan boleh mengakses dan menggunakan semua ahli bukan persendirian dalam kelas asas, termasuk fungsi maya. Ia juga boleh mengatasi fungsi maya kelas asas dalam kelas terbitan. 🎜🎜Warisan Polimorfik🎜🎜Warisan Polimorfik: Apabila kelas terbitan mewarisi daripada berbilang kelas asas. 🎜🎜Dalam pewarisan polimorfik, kebanyakan objek kelas terbitan boleh mengakses dan menggunakan semua fungsi maya kelas asas. Susunan panggilan merentas berbilang hierarki warisan bergantung pada susunan pengisytiharan kelas. 🎜🎜Contoh praktikal:🎜🎜Pertimbangkan kod berikut, menunjukkan penggunaan warisan polimorfik: 🎜rrreee🎜Output:🎜rrreee🎜Dalam contoh ini, Circle The Kelas dan Square mewarisi fungsi maya draw daripada kelas asas Shape. Apabila fungsi draw dipanggil, ia memanggil pelaksanaan yang sesuai berdasarkan jenis objek sebenar. Ini menunjukkan cara pewarisan polimorfik membenarkan kelas terbitan untuk mengatasi fungsi maya yang diwarisi daripada kelas asas dan menyediakan pelaksanaan khusus objek yang betul pada masa jalan. 🎜

Atas ialah kandungan terperinci Fungsi dan Warisan Maya C++: Memahami Misteri Pewarisan Polimorfik. 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