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

Memahami dan menggunakan fungsi C++ membebankan dan menulis semula

王林
Lepaskan: 2024-04-20 15:36:01
asal
1145 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
  }
};
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan