Rumah >pembangunan bahagian belakang >C++ >Memahami dan menggunakan fungsi C++ membebankan dan menulis semula

Memahami dan menggunakan fungsi C++ membebankan dan menulis semula

王林
王林asal
2024-04-20 15:36:011114semak imbas

Fungsi berlebihan dalam C++ membolehkan fungsi dengan nama yang sama ditakrifkan dalam kelas yang sama, tetapi dengan senarai parameter yang berbeza berlaku apabila fungsi dengan nama dan parameter yang sama seperti kelas induk ditakrifkan dalam subkelas, dan subkelas; fungsi akan menimpa fungsi kelas induk. Dalam contoh praktikal, fungsi terlampau beban digunakan untuk melaksanakan operasi penambahan untuk jenis data yang berbeza, dan fungsi yang ditindih digunakan untuk mengatasi fungsi maya dalam kelas induk untuk mengira luas bentuk yang berbeza.

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

C++ lebih memuatkan dan menulis semula: pemahaman mendalam dan aplikasi praktikal

Fungsi lebih muatan

Fungsi lebih muatan.membolehkan mentakrifkan berbilang fungsi dengan nama parameter yang sama

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

Function overriding

Function overriding berlaku apabila fungsi ditakrifkan dalam kelas anak dengan nama yang sama dan senarai parameter yang sama dengan kelas induk. Fungsi subkelas akan mengatasi fungsi kelas induk.

class ParentClass {
public:
  virtual int display() {
    return 10;
  }
};

class ChildClass : public ParentClass {
public:
  int display() { // 重写父类的 display()
    return 20;
  }
};

Kes praktikal

Contoh fungsi terlampau beban:

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

Contoh fungsi yang ditulis semula:

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

Atas ialah kandungan terperinci Memahami dan menggunakan fungsi C++ membebankan dan menulis semula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn