Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penulisan Semula Fungsi dan Pengaturcaraan Templat: Mendedahkan Penggunaan Ajaib Pengembangan Kod dan Generalisasi Kod

Penulisan Semula Fungsi dan Pengaturcaraan Templat: Mendedahkan Penggunaan Ajaib Pengembangan Kod dan Generalisasi Kod

王林
王林asal
2024-05-05 11:00:011019semak imbas

Penulisan semula fungsi dan pengaturcaraan templat ialah teknik yang berkuasa dalam C++ untuk mencapai sambungan dan generalisasi kod. Penggantian fungsi membolehkan sambungan dengan mengatasi kaedah kelas asas dalam kelas terbitan pengaturcaraan templat membolehkan generalisasi dengan mencipta kod generik yang boleh digunakan dalam pelbagai jenis. Contoh praktikal menunjukkan penggunaan penulisan semula fungsi dan pengaturcaraan templat untuk mengira luas sesuatu bentuk, menunjukkan kegunaan kedua-dua teknik dalam memanjangkan dan menyamaratakan kod.

Penulisan Semula Fungsi dan Pengaturcaraan Templat: Mendedahkan Penggunaan Ajaib Pengembangan Kod dan Generalisasi Kod

Penulisan semula fungsi dan pengaturcaraan templat: Mendedahkan kuasa lanjutan kod dan generalisasi kod

Penulisan semula fungsi dan pengaturcaraan templat ialah teknik berkuasa dalam pengaturcaraan C++ yang membolehkan pembangun mencipta kod berskala dan serba boleh.

Function Overriding

Fungsi overriding membolehkan sambungan kod dengan membenarkan pelaksanaan alternatif kaedah kelas asas disediakan dalam kelas terbitan. Sintaksnya adalah seperti berikut:

class Derived : public Base {
public:
  // 重写基类方法
  override double calculate() {
    // 自定义实现
    ...
  }
};

Template Programming

Template programming membolehkan penciptaan kod generik yang boleh digunakan untuk pelbagai jenis. Sintaksnya adalah seperti berikut:

template<typename T>
class MyClass {
  T data;
  ...
};

Contoh praktikal

Pertimbangkan program untuk mengira kawasan pelbagai bentuk:

// 使用基类和函数重写
class Shape {
public:
  virtual double calculateArea() = 0;
};

class Square : public Shape { // 使用函数重写扩展基类
public:
  double side;
  Square(double side) : side(side) {}
  double calculateArea() override { return side * side; }
};

class Circle : public Shape { // 再次使用函数重写扩展基类
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double calculateArea() override { return 3.14 * radius * radius; }
};

int main() {
  Square s(5);
  Circle c(10);
  cout << "Square area: " << s.calculateArea() << endl;
  cout << "Circle area: " << c.calculateArea() << endl;
}
// 使用模板编程
template<typename T>
class Shape {
  T side;
public:
  Shape(T side) : side(side) {}
  T calculateArea() { return side * side; } // 通用实现
};

// 使用模板实例化创建特定形状
class Square : public Shape<double> {};
class Circle : public Shape<double> {};

int main() {
  Square s(5);
  Circle c(10);
  cout << "Square area: " << s.calculateArea() << endl;
  cout << "Circle area: " << c.calculateArea() << endl;
}

Atas ialah kandungan terperinci Penulisan Semula Fungsi dan Pengaturcaraan Templat: Mendedahkan Penggunaan Ajaib Pengembangan Kod dan Generalisasi Kod. 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