Maison > développement back-end > C++ > Comprendre et utiliser la surcharge et la réécriture de fonctions C++

Comprendre et utiliser la surcharge et la réécriture de fonctions C++

王林
Libérer: 2024-04-20 15:36:01
original
1133 Les gens l'ont consulté

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.

C++ 函数重载和重写的理解和使用

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;
}
Copier après la connexion

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;
  }
};
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal