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

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

王林
王林original
2024-04-20 15:36:011032parcourir

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;
}

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!

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