C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のデフォルト引数とは?基本の使い方をサンプルコードで解説

本記事では、C++における「デフォルト引数(デフォルト実引数)」の基本的な概念と使い方を、サンプルコードとともにわかりやすく解説します。

デフォルト引数とは

デフォルト引数とは、関数の宣言時にあらかじめ初期値を設定しておく引数のことです。関数を呼び出す際に、その引数に対応する値が渡されなかった場合、自動的に設定済みのデフォルト値が使用されます。

これにより、同じ関数を「引数の数が異なる複数のパターン」で柔軟に呼び出せるようになり、オーバーロードを定義する手間を省くことができます。

サンプルコード

以下は、デフォルト引数を持つ関数 sum() を定義した例です。引数 zw にはデフォルト値として 0 が設定されています。

#include<iostream>
using namespace std;

// デフォルト引数を持つ関数の定義
int sum(int x, int y, int z=0, int w=0){
    return (x + y + z + w);
}

int main(){
    cout << sum(10, 15) << endl;        // z, w はデフォルト値 0 を使用
    cout << sum(10, 15, 25) << endl;    // w のみデフォルト値 0 を使用
    cout << sum(10, 15, 25, 30) << endl; // すべての引数に値を渡す
    return 0;
}

実行結果

25
50
80

解説

このプログラムでは、sum() 関数を3通りの方法で呼び出しています。

  • sum(10, 15):引数が2つしか渡されていないため、zw にはデフォルト値の 0 が適用され、合計は 25 となります。
  • sum(10, 15, 25):引数が3つ渡されているため、w のみデフォルト値の 0 が適用され、合計は 50 となります。
  • sum(10, 15, 25, 30):すべての引数に値が渡されているため、デフォルト値は使用されず、合計は 80 となります。

デフォルト引数を使用する際の注意点

デフォルト引数を定義する際には、いくつかのルールがあります。

  • デフォルト値を設定できるのは、引数リストの右側から連続した引数のみです。例えば int sum(int x=0, int y) のような定義はコンパイルエラーになります。
  • 関数の宣言と定義を分ける場合、デフォルト値は宣言側に一度だけ記述します。両方に記述するとエラーとなります。
  • デフォルト引数とオーバーロードを組み合わせると、呼び出しが曖昧になる場合があるため注意が必要です。

これらのルールを守ることで、デフォルト引数を活用した読みやすく保守性の高いコードを書くことができます。

  1. C++の配列パズル:減算演算子を使わずに「自分以外の要素の合計」を求める方法

    今回は、配列に関する興味深い問題を紹介します。n個の要素を持つ配列が与えられ、それをもとに同じくn個の要素を持つ別の配列を作成します。ただし、新しい配列のi番目には、元の配列のi番目の要素を除いたすべての要素の合計を格納します。さらに重要な制約として、減算演算子(-)を使用してはいけないという条件が課されています。 問題のポイント もし減算が使えるのであれば、話は簡単です。まず全要素の合計を求めておき、そこからi番目の要素を引いた値を新しい配列のi番目に格納すればよいだけです。しかし、この問題では減算が禁止されているため、別のアプローチが必要になります。 そこで、各位置i(0〜n-1)について

  2. C++で可変数の引数(可変長引数)を扱う方法

    プログラミングをしていると、引数の個数があらかじめ決まっていない関数、つまり呼び出しのたびに異なる数のパラメータを受け取れる関数が必要になる場面があります。C/C++ではこのような状況に対応する仕組みが用意されており、要件に応じて可変個の引数を受け取る関数を自由に定義できます。以下に、そのような関数の定義例を示します。 int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); } 注目すべきは、関数func()の最後の引数が省略記号(ピリオド3つの「...」)になってい