Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++

Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++

WBOY
WBOYasal
2024-04-19 16:21:011016semak imbas

Lebihan beban fungsi membenarkan fungsi dengan nama yang sama tetapi tandatangan berbeza dalam kelas, manakala overriding fungsi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dengan tandatangan yang sama dalam kelas asas, memberikan gelagat berbeza. Perbezaan antara kelebihan beban fungsi dan menulis semula dalam C++ )berbeza.

如何区分 C++ 中函数重载和重写Sintaks:

return_type function_name(parameter_types) {
  // 函数体
}

// 另一个重载
return_type function_name(other_parameter_types) {
  // 另一个函数体
}
Contoh praktikal:

Pertimbangkan kelas yang dipanggil AreaCalculator yang mengira luas bentuk yang berbeza: >Hereee,

Hereee,

> kod> Fungsi dibebankan untuk menerima nombor dan jenis argumen yang berbeza, membolehkan kawasan berbeza dikira berdasarkan jenis bentuk.

Fungsi mengatasi

Fungsi mengatasi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dalam kelas asas dengan tandatangan yang sama (nama dan jenis parameter). Fungsi yang ditindih dalam kelas terbitan selalunya berkelakuan berbeza daripada fungsi dalam kelas asas.

Sintaks:

AreaCalculator 的类,它计算不同形状的面积:

class AreaCalculator {
public:
  double Area(double radius) {
    return M_PI * radius * radius;
  }

  double Area(double length, double width) {
    return length * width;
  }

  double Area(int numOfSides, double sideLength) {
    // 正多边形的面积公式
    // ... 省略后面代码
  }
};

在这里,Area 函数被重载以接收不同数量和类型的参数,允许根据形状类型计算不同的面积。

函数重写

函数重写发生在派生类中,当它覆盖基类中具有相同签名(名称和参数类型)的函数时。派生类中的重写函数的行为通常不同于基类中的函数。

语法:

class DerivedClass : public BaseClass {
public:
  // 重写基类中的函数
  return_type function_name(parameter_types) {
    // 重写的函数体
  }
};

实战案例:

考虑一个名为 Shape 的基类,它定义了一个 Draw 函数来绘制形状:

class Shape {
public:
  virtual void Draw() {
    // 绘制通用形状
    // ... 省略后面代码
  }
};

派生类 Circle 可以重写 Draw 函数来专门绘制圆形:

class Circle : public Shape {
public:
  void Draw() override {
    // 绘制圆形
    // ... 省略后面代码
  }
};

通过重写,Circle 类的 Draw 函数将覆盖 Shape 类中的 Drawrrreee

🎜Kes praktikal: 🎜🎜🎜Pertimbangkan kelas asas bernama Shape, yang mentakrifkan fungsi Draw untuk melukis bentuk: 🎜 rrreee Kelas terbitan Bulatan boleh mengatasi fungsi Draw untuk melukis bulatan secara khusus: 🎜rrreee🎜Dengan mengatasi, kelas Circle The Draw mengatasi fungsi <code>Draw dalam kelas Shape dan menyediakan pelaksanaan lukisan yang lebih khusus. 🎜

Atas ialah kandungan terperinci Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++. 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