Bagaimanakah polimorfisme berinteraksi dengan lebihan fungsi dalam C++?

WBOY
Lepaskan: 2024-06-05 18:03:05
asal
580 orang telah melayarinya

Polymorphism dan overloading fungsi berinteraksi: cipta fungsi terlebih beban dalam kelas asas, dan takrifkan semula versi fungsi ini dalam kelas terbitan. Penunjuk atau rujukan kelas induk boleh menunjuk ke objek subkelas dan memanggil kaedah yang berbeza mengikut jenis objek sebenar. Dalam kod sampel, kelas asas Shape mengisytiharkan kawasan() fungsi maya tulen, dan kelas terbitan Rectangle dan Circle mentakrifkan semula kaedah kawasan() untuk mengira kawasan masing-masing.

C++ 中多态性如何与函数重载相互作用?

Interaksi Polimorfisme dan Lebihan Fungsi dalam C++

Dalam C++, Function Overloading membenarkan penggunaan nama fungsi yang sama untuk mencipta versi fungsi yang berbeza dengan senarai parameter yang berbeza.

Polymorphism membenarkan objek subkelas dirawat dengan jenis kelas induknya. Ini membolehkan kelas induk menunjuk ke penunjuk atau rujukan kepada objek kelas anak, membenarkan kaedah yang berbeza dipanggil bergantung pada jenis objek sebenar.

Apabila polimorfisme dan lebihan fungsi digunakan bersama, adalah mungkin untuk mencipta fungsi terlampau beban dalam kelas asas dan mentakrifkan semula versi fungsi ini dalam kelas terbitan.

Contoh kod:

class Shape {
public:
    virtual double area() = 0;  // 纯虚函数
};

class Rectangle : public Shape {
public:
    Rectangle(double length, double width) : _length(length), _width(width) {}
    double area() override { return _length * _width; }

private:
    double _length, _width;
};

class Circle : public Shape {
public:
    Circle(double radius) : _radius(radius) {}
    double area() override { return 3.14 * _radius * _radius; }

private:
    double _radius;
};

int main() {
    Shape* shapes[] = {
        new Rectangle(4.5, 3.2),
        new Circle(2.5)
    };

    for (Shape* shape : shapes) {
        cout << shape->area() << endl;  // 调用正确的 area() 方法
    }

    return 0;
}
Salin selepas log masuk

Output:

14.4
19.625
Salin selepas log masuk

Dalam contoh ini, kelas asas Shape mengisytiharkan area() fungsi maya tulen. Kelas terbitan Rectangle dan Bulatan mentakrifkan semula kaedah kawasan() untuk mengira kawasannya secara berbeza. Shape 基类声明了一个 area() 纯虚函数。派生类 RectangleCircle 重新定义 area() 方法,以不同的方式计算其面积。

main() 函数创建一个 Shape 指针数组,并将派生类对象存储在其中。循环遍历数组并调用 area()

Fungsi main() mencipta tatasusunan penunjuk Shape dan menyimpan objek kelas terbitan di dalamnya. Gelung melalui tatasusunan dan panggil kaedah area(), memanggil kaedah yang sesuai berdasarkan jenis sebenar objek yang ditunjuk. 🎜

Atas ialah kandungan terperinci Bagaimanakah polimorfisme berinteraksi dengan lebihan fungsi dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan