Maison  >  Article  >  développement back-end  >  Surcharge de fonctions C++ et fonctions virtuelles de fonction

Surcharge de fonctions C++ et fonctions virtuelles de fonction

WBOY
WBOYoriginal
2024-04-15 22:36:02404parcourir

Réponse : La surcharge de fonctions et les fonctions virtuelles de fonctions en C++ permettent aux développeurs de créer des fonctions avec le même nom mais des listes de paramètres ou des comportements différents. Description détaillée : Surcharge de fonctions : créez des fonctions avec le même nom mais des listes de paramètres différentes pour utiliser des fonctions avec des fonctionnalités similaires dans différentes situations. Fonction virtuelle de fonction : fonction qui remplace la classe de base dans une classe dérivée, utilisée pour le polymorphisme, permettant à la classe dérivée de fournir une implémentation différente de celle de la classe de base.

C++ 函数重载和函数虚函数

Surcharge de fonctions et fonctions virtuelles de fonctions en C++

Surcharge de fonctions

La surcharge de fonctions vous permet de créer plusieurs fonctions portant le même nom mais avec des listes de paramètres différentes. Ceci est utile si vous devez utiliser des fonctions ayant des fonctionnalités similaires dans différentes situations.

Syntaxe :

ret_type function_name(parameter_list_1);
ret_type function_name(parameter_list_2);
...

Exemple :

void printInfo(int x) {
  cout << "int: " << x << endl;
}

void printInfo(double x) {
  cout << "double: " << x << endl;
}

int main() {
  int a = 10;
  double b = 3.14;
  printInfo(a);  // calls printInfo(int)
  printInfo(b);  // calls printInfo(double)
  return 0;
}

Fonction fonction virtuelle

Fonction fonction virtuelle permet de remplacer les fonctions de la classe de base dans la classe dérivée. Ceci est utile pour le polymorphisme et la programmation orientée objet car cela vous permet de fournir une classe dérivée avec une implémentation différente de celle de la classe de base.

Syntaxe :

Utilisez le mot-clé virtuel lors de la déclaration d'une fonction dans une classe de base. virtual

virtual ret_type function_name(parameter_list) const = 0;

在派生类中重写函数时使用关键字 override

override ret_type function_name(parameter_list) const { /* implementation */ }

示例:

class Shape {
public:
  virtual double area() const = 0;  // pure virtual function
};

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

class Square : public Shape {
public:
  double side;
  Square(double side) : side(side) {}
  override double area() const { return side * side; }
};

int main() {
  Shape* s1 = new Circle(5);
  Shape* s2 = new Square(10);
  cout << "Area of circle: " << s1->area() << endl;
  cout << "Area of square: " << s2->area() << endl;
  return 0;
}

注意事项:

  • 函数重载只适用于不同的参数列表。不能只改变返回类型。
  • 函数虚函数只适用于虚函数,即在基类中声明为 virtual 的函数。
  • 纯虚函数(在基类中声明为 virtual= 0
  • virtual ret_type function_name(parameter_list) const = 0;
🎜Utilisez le mot-clé override lors du remplacement d'une fonction dans une classe dérivée. 🎜🎜override ret_type function_name(parameter_list) const { /* implémentation */ }🎜🎜🎜Exemple : 🎜🎜rrreee🎜🎜Remarque : 🎜🎜
  • La surcharge de fonctions s'applique uniquement aux différents paramètres listes. Vous ne pouvez pas simplement modifier le type de retour. 🎜
  • Les fonctions virtuelles de fonction s'appliquent uniquement aux fonctions virtuelles, c'est-à-dire aux fonctions déclarées comme virtuelles dans la classe de base. 🎜
  • Les fonctions virtuelles pures (déclarées comme virtuelle et = 0 dans la classe de base) doivent être remplacées dans la classe dérivée, sinon la classe dérivée deviendra une classe abstraite . 🎜🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn