Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan polimorfisme untuk mengendalikan perbezaan antara objek yang berbeza dalam C++?

Bagaimana untuk menggunakan polimorfisme untuk mengendalikan perbezaan antara objek yang berbeza dalam C++?

WBOY
WBOYasal
2024-06-05 11:50:21532semak imbas

Polymorphism ialah ciri pengaturcaraan berorientasikan objek yang membolehkan objek berkelakuan berbeza pada masa jalanan, walaupun ia mempunyai kelas induk yang sama. Dalam C++, polimorfisme dicapai melalui fungsi maya dan pewarisan: Tentukan kelas asas dan kelas terbitan: kelas asas mengandungi fungsi maya, dan kelas terbitan mewarisi kelas asas dan mengatasi fungsi maya. Gunakan penunjuk atau rujukan: Simpan alamat objek kelas asas melalui penunjuk atau rujukan, dan akses objek kelas terbitan berbeza pada masa jalan. Memanggil melalui fungsi maya: Memanggil fungsi maya dalam kelas asas akan memanggil fungsi kelas terbitan yang diganti pada masa jalan. Kes praktikal: Dalam hierarki kelas bentuk, kelas Circle dan Rectangle mewarisi kelas Shape dan mengatasi fungsi maya kawasan(), perimeter() dan draw(), membolehkan bentuk ini digunakan dalam aplikasi praktikal polimorfisme dalam C++

C++ 中如何使用多态性处理不同对象的差异?

Apakah itu polimorfisme?

Polymorphism ialah ciri dalam bahasa pengaturcaraan berorientasikan objek yang membolehkan objek berkelakuan berbeza pada masa jalanan, walaupun ia mempunyai kelas induk yang sama. Dalam C++, polimorfisme dicapai melalui fungsi maya dan pewarisan.

Bagaimana untuk menggunakan polimorfisme?

Tentukan kelas asas dan terbitan: Tentukan kelas asas yang mengandungi fungsi maya. Kelas terbitan mewarisi kelas asas dan mengatasi fungsi maya untuk menyediakan pelaksanaan yang berbeza.

    Gunakan penunjuk atau rujukan:
  1. Simpan alamat objek kelas asas melalui penunjuk atau rujukan. Ini membenarkan akses kepada objek kelas terbitan yang berbeza pada masa jalan.
  2. Panggil melalui fungsi maya:
  3. Panggil fungsi maya dalam kelas asas dan ia akan memanggil fungsi kelas terbitan yang diganti pada masa jalan, bergantung pada jenis objek sebenar.
  4. Kes praktikal: Hierarki kelas bentuk
Bentuk kelas asas

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

Kelas terbitan Bulatan dan Segiempat Segiempat

class Circle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

class Rectangle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};
🜜
vector<Shape*> shapes;
shapes.push_back(new Circle(...));
shapes.push_back(new Rectangle(...));

for (auto& shape : shapes) {
  cout << "面积: " << shape->area() << endl;
  cout << "周长: " << shape->perimeter() << endl;
  shape->draw();
}
🜎 luas polimeter dan

rreee

🎎

Kelebihan:

Permudahkan kod dan kekalkan kelas asas dan kelas terbitan dipisahkan.

Tingkatkan kebolehskalaan dan kebolehselenggaraan kod.

Membenarkan pengendalian dinamik objek berbeza pada masa jalan.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan polimorfisme untuk mengendalikan perbezaan antara objek yang berbeza 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