ホームページ > バックエンド開発 > C++ > C++ 関数のオーバーロードと関数仮想関数

C++ 関数のオーバーロードと関数仮想関数

WBOY
リリース: 2024-04-15 22:36:02
オリジナル
448 人が閲覧しました

回答: C の関数オーバーロードと関数仮想関数を使用すると、開発者は同じ名前でパラメーター リストや動作が異なる関数を作成できます。詳細な説明: 関数のオーバーロード: 同じ名前で異なるパラメーター リストを持つ関数を作成して、さまざまな状況で同様の機能を持つ関数を使用します。関数仮想関数: ポリモーフィズムに使用される派生クラスの基本クラスの関数をオーバーライドし、派生クラスが基本クラスとは異なる実装を提供できるようにします。

C++ 函数重载和函数虚函数

#C の関数のオーバーロードと関数仮想関数

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

#関数のオーバーロードを使用すると、名前は同じだがパラメータ リストが異なる複数の関数を作成できます。これは、さまざまな状況で同様の機能を持つ関数を使用する必要がある場合に便利です。

# 構文:

ret_type function_name(parameter_list_1);
ret_type function_name(parameter_list_2);
...
ログイン後にコピー

例:

void printInfo(int x) {
  cout << "int: " << x << endl;
}

void printInfo(double x) {
  cout << "double: " << x << endl;
}

int main() {
  int a = 10;
  double b = 3.14;
  printInfo(a);  // calls printInfo(int)
  printInfo(b);  // calls printInfo(double)
  return 0;
}
ログイン後にコピー

関数仮想関数

Function 仮想関数を使用すると、派生クラスの基本クラスの関数をオーバーライドできます。これは、基本クラスとは異なる実装を持つ派生クラスを提供できるため、ポリモーフィズムやオブジェクト指向プログラミングに役立ちます。

構文:

基本クラスで関数を宣言する場合は、キーワード virtual を使用します。

virtual ret_type function_name(parameter_list) const = 0;

派生クラスの関数をオーバーライドする場合は、キーワード override を使用します。

override ret_type function_name(parameter_list) const { /*implementation */ }

例:

class Shape {
public:
  virtual double area() const = 0;  // pure virtual function
};

class Circle : public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  override double area() const { return 3.14 * radius * radius; }
};

class Square : public Shape {
public:
  double side;
  Square(double side) : side(side) {}
  override double area() const { return side * side; }
};

int main() {
  Shape* s1 = new Circle(5);
  Shape* s2 = new Square(10);
  cout << "Area of circle: " << s1->area() << endl;
  cout << "Area of square: " << s2->area() << endl;
  return 0;
}
ログイン後にコピー

注:

関数のオーバーロードは、異なるパラメーター リストにのみ適用されます。戻り値の型だけを変更することはできません。

関数仮想関数は、仮想関数、つまり基本クラスで
    virtual
  • として宣言された関数にのみ適用されます。
  • 純粋な仮想関数 (基本クラスで virtual および
  • = 0
  • として宣言されている) は、派生クラスでオーバーライドする必要があります。オーバーライドしないと、派生クラスは抽象クラスになります。 。

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

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