ホームページ > バックエンド開発 > C++ > C++ で関数のオーバーロードと書き換えを区別する方法

C++ で関数のオーバーロードと書き換えを区別する方法

WBOY
リリース: 2024-04-19 16:21:01
オリジナル
1045 人が閲覧しました

関数のオーバーロードでは、クラス内で同じ名前で異なるシグネチャを持つ関数を使用できますが、基本クラス内の同じシグネチャを持つ関数をオーバーライドするときに派生クラスで関数のオーバーライドが発生し、異なる動作が提供されます。

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

#関数のオーバーロードと C での書き換えの違い

##関数のオーバーロード

#Functionオーバーロードを使用すると、シグネチャ (パラメーターの型と数) が異なる限り、同じクラス内で同じ名前の異なる関数を使用できます。

構文:

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

// 另一个重载
return_type function_name(other_parameter_types) {
  // 另一个函数体
}
ログイン後にコピー
実際のケース:

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 クラスの Draw 関数をオーバーライドし、より具体的な描画の実装。

以上がC++ で関数のオーバーロードと書き換えを区別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート