C++の基礎:関数オーバーロードを使い方を学ぶ

提供: Support
移動先: 案内検索

概要

関数をオーバーロードする方法を知りたいですか?関数のオーバーロードとは何ですか?オーバーロード関数とは何ですか?C++では、どのようにして関数のオーバーロードを行うのでしょうか?関数内で複数のパラメータ型を使用するにはどうすればよいのでしょうか? この記事では、その疑問について解説いたします。


「関数のオーバーロード」とは、同じ関数を異なる変数型で定義することにより、同じ関数を操作するために使用されます。関数オーバーロードを使用すると、同じ名前の関数を異なるパラメータ型や複数のバリエーションで使用することができます。


別の記事「C++の基礎: 関数でのパラメータの使い方を学ぶ」で、aとbのパラメータを持ち、aとbの合計を返す加算関数であるadd()を作成しました。C++の関数は、メモリやCPUの演算を利用する上で、最も柔軟で効果的な関数です。例えば、関数内で整数型の変数を使うと、長整数型の変数を使うよりも高速に処理できます。また、正しい型を使用すると、変数を使用することでいくつかの利点が得られる場合があります (メモリ使用量、変換が必要な場合等)。プログラミングでは、さまざまなタイプの変数や変数のバリエーションを使用したい場合がありますが、ここでは、関数のオーバーロードを使用します。


整数の足し算の例を思い出してみましょう。

int add (int a, int b)
{ 
  return a+b;
}

この関数は、以下の例のように使用することができます。

#include <iostream>
 
int add (int a, int b)
{ 
  return a+b;
}
 
int main()
{
  int x = 300, y = 500;
  int result = add(x, y);
  std::cout << result << '\n';
 
}

この関数と同じように、浮動小数点数を加算する関数を名前を変えて新たに生成することができます。

float addf (float a, float b)
{ 
  return a+b;
}

ご覧の通り、浮動小数点数の演算には新しい名前のaddf()を使うべきですが、

もし同じ関数名を浮動小数点数と整数値の両方に使用したい場合は、以下のように同じ関数名で新しい宣言と定義を追加することで、この関数をオーバーロードすることができます。

#include <iostream>
 
int add (int a, int b) // overloaded
{ 
  return a+b;
}
 
float add (float a, float b) // overloaded
{ 
  return a+b;
}
 
 
int main()
{
  int x = 300, y = 500;
  int result = add(x, y);
  std::cout << result << '\n';
 
  float xf = 30.5, yf = 50.5;
  float resultf = add(xf, yf);
  std::cout << resultf << '\n';
 
}

ご覧のように、関数名は同じですが、パラメータの型と戻り値の型が異なりますが、どちらもaとbを足すのに使用されています。

int add (int a, int b)
{ 
  return a+b;
}
 
float add (float a, float b)
{ 
  return a+b;
}


関連情報