首頁  >  文章  >  後端開發  >  函數重寫與模板程式設計:揭示程式碼擴充與程式碼泛化的妙用

函數重寫與模板程式設計:揭示程式碼擴充與程式碼泛化的妙用

王林
王林原創
2024-05-05 11:00:01962瀏覽

函數重寫和模板程式設計是 C 中用於實現程式碼擴充和泛化的強大技術。函數重寫透過在衍生類別中重寫基底類別方法來實現擴充;模板程式設計透過建立可在各種類型中使用的泛型程式碼來實現泛化。實戰案例演示了使用函數重寫和模板編程計算形狀面積,展示了這兩種技術在擴展和泛化程式碼方面的用途。

函數重寫與模板程式設計:揭示程式碼擴充與程式碼泛化的妙用

函數重寫與模板程式設計:揭示程式碼擴充與程式碼泛化的妙用

函數重寫和模板程式設計是C 程式設計中的強大技術,允許開發人員創建可擴展且通用的程式碼。

函數重寫

函數重寫透過允許在衍生類別中提供基底類別方法的替代實作來實現程式碼擴展。語法如下:

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

模板程式設計

模板程式設計允許建立泛型程式碼,可用於各種類型。語法如下:

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

實戰案例

考慮一個用於計算不同形狀面積的程式:

// 使用基类和函数重写
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;
}

以上是函數重寫與模板程式設計:揭示程式碼擴充與程式碼泛化的妙用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn