Maison >développement back-end >C++ >Spécifications standard du langage C++ pour la surcharge et la réécriture de fonctions
La surcharge de fonctions vous permet de définir une fonction avec le même nom dans la même portée, mais nécessite une liste de paramètres différente ; tandis que la substitution de fonction vous permet de définir une fonction avec le même nom et la même liste de paramètres que la classe de base dans une classe dérivée, nécessitant le mot-clé override, le type de retour et la liste de paramètres est exactement la même que la fonction de classe de base. Exemples de surcharge : print(int), print(double); exemples d'écrasement : foo() dans la classe Derived remplace foo() dans la classe Base.
Spécifications standard du langage C++ pour la surcharge et la réécriture de fonctions
Surcharge de fonctions
La surcharge permet de définir plusieurs fonctions avec le même nom dans la même portée, mais leurs listes de paramètres doivent être différentes. Le standard du langage C++ exige que la surcharge de fonctions suive les spécifications suivantes :
Exemple :
void print(int x); void print(double x);
Remplacement de fonction
Le remplacement permet de définir une fonction dans une classe dérivée avec le même nom et la même liste de paramètres que dans la classe de base. Le standard du langage C++ exige que la réécriture des fonctions suive les spécifications suivantes :
Exemple :
class Base { public: virtual void foo(); }; class Derived : public Base { public: override void foo() override; // 重写基类中的 foo };
Cas pratique
Surcharge de fonctions :
#include <iostream> using namespace std; void print(int x) { cout << "int: " << x << endl; } void print(double x) { cout << "double: " << x << endl; } int main() { print(10); // 调用 int 版本的 print print(3.14); // 调用 double 版本的 print return 0; }
Réécriture de fonctions :
#include <iostream> using namespace std; class Shape { public: virtual void draw() = 0; // 纯虚函数 }; class Rectangle : public Shape { public: void draw() override { cout << "Drawing a rectangle" << endl; } }; int main() { Rectangle r; r.draw(); // 调用 Rectangle 类中的重写函数 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!