Bagaimana untuk melaksanakan polimorfisme dalam reka bentuk kelas C++?

WBOY
Lepaskan: 2024-06-03 19:23:00
asal
600 orang telah melayarinya

Polymorphism membolehkan kelas terbitan mempunyai gelagat berbeza sambil berkongsi antara muka yang sama Langkah-langkah untuk mencapai ini termasuk: mencipta kelas asas, kelas terbitan, fungsi maya dan menggunakan penunjuk kelas asas Kod sampel menunjukkan cara menggunakan hierarki kelas bentuk ( Shape , Segi empat tepat, Bulatan) untuk melaksanakan polimorfisme dan mengira jumlah luas bentuk yang berbeza.

Bagaimana untuk melaksanakan polimorfisme dalam reka bentuk kelas C++?

Reka bentuk kelas untuk melaksanakan polimorfisme dalam C++

Apakah itu polimorfisme?

Polymorphism membenarkan kelas terbitan dan kelas asas mempunyai gelagat berbeza sambil berkongsi antara muka yang sama. Ia menyediakan cara yang elegan untuk mencipta koleksi objek dengan gelagat yang serupa tetapi pelaksanaan yang berbeza.

Langkah untuk melaksanakan polimorfisme:

  1. Cipta kelas asas: Tentukan antara muka biasa yang akan dikongsi oleh kelas terbitan.
  2. Kelas terbitan: Buat kelas terbitan daripada kelas asas untuk melaksanakan gelagat tertentu.
  3. Fungsi maya: Isytihar fungsi maya dalam kelas asas dan takrifkan semula dalam kelas terbitan. Ini membolehkan panggilan fungsi diikat secara dinamik semasa masa jalan.
  4. Penunjuk kelas asas: Gunakan penunjuk kelas asas atau rujukan untuk memegang objek kelas terbitan untuk mencapai polimorfisme.

Kes praktikal:

Pertimbangkan hierarki kelas bentuk:

class Shape {
public:
    virtual double area() = 0; // 纯虚函数(必须在派生类中重新定义)
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    double area() override { return width_ * height_; }
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    double area() override { return 3.14 * radius_ * radius_; }
private:
    double radius_;
};
Salin selepas log masuk

Penggunaan:

// 创建不同形状的集合
vector<Shape*> shapes;
shapes.push_back(new Rectangle(2.0, 3.0));
shapes.push_back(new Circle(4.0));

// 使用基类指针计算总面积
double totalArea = 0.0;
for (Shape* shape : shapes) {
    totalArea += shape->area(); // 使用多态性动态绑定函数调用
}

// 输出总面积
cout << "Total area: " << totalArea << endl;
Salin selepas log masuk

Output: reee

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan polimorfisme dalam reka bentuk kelas 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!