ホームページ  >  記事  >  バックエンド開発  >  関数書き換えとテンプレート プログラミング: コード拡張とコード一般化の魔法の使い方を明らかにする

関数書き換えとテンプレート プログラミング: コード拡張とコード一般化の魔法の使い方を明らかにする

王林
王林オリジナル
2024-05-05 11:00:011019ブラウズ

関数の書き換えとテンプレート プログラミングは、コードの拡張と一般化を可能にする 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。