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.
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:
rreeeKod 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!