Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah fungsi C++ lebih muatan dan fungsi maya berfungsi bersama?

Bagaimanakah fungsi C++ lebih muatan dan fungsi maya berfungsi bersama?

PHPz
PHPzasal
2024-04-26 10:09:02750semak imbas

Fungsi lebihan beban dalam C++ membolehkan mentakrifkan pelaksanaan berbeza untuk fungsi dengan nama yang sama dengan parameter berbeza, manakala fungsi maya membenarkan mengatasi fungsi kelas asas dalam kelas terbitan untuk mencapai polimorfisme. Lebihan fungsi dan fungsi maya boleh berfungsi bersama-sama Dengan mereka bentuk fungsi lebihan maya dalam kelas asas, kelas terbitan hanya boleh membebankan versi gabungan parameter tertentu, dengan itu menyediakan polimorfisme yang lebih fleksibel, seperti mengira jenis yang berbeza dalam kes praktikal. bentuk dari asalnya.

C++ 函数重载与虚函数如何协作?

Kerjasama lebihan fungsi dan fungsi maya dalam C++

Pengenalan

Bahasa C++ menyediakan dua mekanisme untuk mencapai polimorfisme: lebihan fungsi dan fungsi maya. Lebihan beban fungsi membolehkan mentakrifkan berbilang fungsi dengan nama yang sama tetapi gelagat berbeza berdasarkan jenis parameter. Fungsi maya membenarkan fungsi dalam kelas asas ditimpa dalam kelas terbitan, sekali gus menyokong polimorfisme dalam warisan.

Function Overloading

Function overloading membolehkan mentakrifkan pelaksanaan berbeza untuk berbilang fungsi dengan nama yang sama tetapi senarai parameter yang berbeza. Pengkompil akan memilih fungsi yang betul berdasarkan jenis argumen apabila dipanggil. Contohnya:

int add(int a, int b) {
  return a + b;
}
double add(double a, double b) {
  return a + b;
}

Apabila digunakan:

int sum1 = add(1, 2);  // 呼叫整數版本
double sum2 = add(1.5, 2.3);  // 呼叫浮點版本

Fungsi maya

Fungsi maya membenarkan fungsi dalam kelas asas ditimpa dalam kelas terbitan. Apabila fungsi maya dipanggil melalui penuding kelas asas, versi yang diganti dalam kelas terbitan dilaksanakan. Contohnya:

class Shape {
public:
  virtual double getArea() const = 0;
};

class Circle : public Shape {
public:
  double getArea() const override {
    return 3.14 * radius * radius;
  }
private:
  double radius;
};

Apabila digunakan:

Shape* shape = new Circle(5.0);
double area = shape->getArea();  // 會呼叫 Circle::getArea()

Kolaborasi lebihan fungsi dan fungsi maya

Fungsi lebih muatan dan fungsi maya boleh bekerjasama untuk menyediakan polimorfisme yang lebih fleksibel. Dengan mereka bentuk fungsi terlampau maya dalam kelas asas, kelas terbitan hanya boleh memuatkan versi dengan kombinasi parameter tertentu. Contohnya:

class Shape {
public:
  virtual double getArea(bool isFilled) const {
    return 0.0;
  }
};

class Circle : public Shape {
public:
  double getArea(bool isFilled) const override {
    if (isFilled) {
      return 3.14 * radius * radius;
    } else {
      return 0.0;
    }
  }
};

Apabila digunakan:

Shape* shape = new Circle(5.0);
double filledArea = shape->getArea(true);  // 呼叫 Circle::getArea(bool)
double unfilledArea = shape->getArea(false);  // 呼叫 Shape::getArea(bool)

Contoh praktikal

Berikut ialah contoh praktikal menggunakan lebihan fungsi dan kerjasama fungsi maya dalam geometri pengiraan:

rreee

Kod ini menunjukkan penggunaan lebihan fungsi dan fungsi maya fungsi mengira jarak dari asal untuk pelbagai jenis bentuk.

Atas ialah kandungan terperinci Bagaimanakah fungsi C++ lebih muatan dan fungsi maya berfungsi bersama?. 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