La surcharge de fonctions en C++ permet de définir des fonctions portant le même nom dans la même classe, mais avec des listes de paramètres différentes ; le remplacement de fonctions se produit lorsqu'une fonction portant le même nom et les mêmes paramètres que la classe parent est définie dans une sous-classe et que la sous-classe La fonction écrasera la fonction de la classe parent. Dans l'exemple pratique, la fonction surchargée est utilisée pour effectuer des opérations d'addition pour différents types de données, et la fonction remplacée est utilisée pour remplacer la fonction virtuelle dans la classe parent afin de calculer l'aire de différentes formes.
Surcharge et réécriture de fonctions C++ : compréhension approfondie et application pratique
Surcharge de fonctions
La surcharge de fonctions permet de définir plusieurs fonctions avec le même nom de fonction mais des listes de paramètres différentes dans la même classe.
class MyClass { public: int add(int a, int b); double add(double a, double b); }; int MyClass::add(int a, int b) { return a + b; } double MyClass::add(double a, double b) { return a + b; }
Remplacement de fonction
Le remplacement de fonction se produit lorsqu'une fonction est définie dans une classe enfant avec le même nom et la même liste de paramètres que la classe parent. Les fonctions de sous-classe remplaceront les fonctions de classe parent.
class ParentClass { public: virtual int display() { return 10; } }; class ChildClass : public ParentClass { public: int display() { // 重写父类的 display() return 20; } };
Cas pratique
Exemple de fonction surchargée :
#include <iostream> class Calculator { public: int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } std::string add(std::string a, std::string b) { return a + b; } }; int main() { Calculator calc; std::cout << calc.add(1, 2) << std::endl; // 输出:3 std::cout << calc.add(1.5, 2.5) << std::endl; // 输出:4 std::cout << calc.add("Hello", "World") << std::endl; // 输出:HelloWorld return 0; }
Exemple de fonction réécrite :
#include <iostream> class Shape { public: virtual double area() = 0; // 纯虚函数(强制子类实现 area()) }; class Rectangle : public Shape { public: Rectangle(double width, double height) : m_width(width), m_height(height) {} double area() override { return m_width * m_height; } private: double m_width; double m_height; }; class Circle : public Shape { public: Circle(double radius) : m_radius(radius) {} double area() override { return 3.14 * m_radius * m_radius; } private: double m_radius; }; int main() { Rectangle rect(5, 10); Circle circle(5); std::cout << "Rectangle area: " << rect.area() << std::endl; // 输出:50 std::cout << "Circle area: " << circle.area() << std::endl; // 输出:78.5 return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!