C++デフォルト引数完全ガイド:仕組み、実例、ベストプラクティス
C++ デフォルト関数引数
C++で関数パラメータにデフォルト値を割り当てる方法を、ステップバイステップの実例と実践的ガイドラインで解説します。
C++では、関数パラメータにデフォルト値を与えられます。呼び出し時に引数が省略されると、コンパイラがデフォルト値を代入します。引数が供給されればデフォルトは無視されます。
デフォルト引数の仕組み

以下の図解を考えてみます:
temp()は両方のデフォルトを使用temp(6)は最初のパラメータを上書き、2つ目はデフォルトのままtemp(6, -2.3)は両方に値を渡し、両デフォルトを上書きtemp(3.4)は誤って double を int パラメータに渡しています。コンパイラは値を3に切り捨て、引数の型が宣言順序と一致しなければならないことを示しています
実例: デフォルト引数の使用
#include <iostream>
using namespace std;
// デフォルト引数付きプロトタイプ
void display(char = '*', int = 3);
int main() {
int count = 5;
cout << "No argument passed: ";
display(); // '*', 3 を使用
cout << "First argument passed: ";
display('#'); // '#', 3 を使用
cout << "Both arguments passed: ";
display('$', count); // '$', 5 を使用
return 0;
}
void display(char c, int count) {
for(int i = 1; i <= count; ++i) {
cout << c;
}
cout << endl;
}
出力
No argument passed: *** First argument passed: ### Both arguments passed: $$$$$
プログラムの動作:
display()はデフォルトc='*'とcount=3を使用display('#')は最初の引数のみ上書き、2つ目はデフォルトのまま- 両引数を渡すとデフォルトは無視される
デフォルトを関数定義で直接指定することも可能で、しばしばより明確です:
#include <iostream>
using namespace std;
void display(char c = '*', int count = 3) {
for(int i = 1; i <= count; ++i) {
cout << c;
}
cout << endl;
}
int main() {
int count = 5;
cout << "No argument passed: ";
display();
cout << "First argument passed: ";
display('#');
cout << "Both arguments passed: ";
display('$', count);
return 0;
}
覚えておくべき重要ポイント
- あるパラメータがデフォルト値を持つと、それ以降のすべてのパラメータもデフォルト値を持たなければなりません。例:
// 無効 void add(int a, int b = 3, int c, int d); // 有効 void add(int a, int c, int b = 3, int d = 4); - デフォルトがプロトタイプではなく定義で指定される場合、定義が呼び出しより前に現れなければなりません。そうでないとコンパイラがエラーを出します。
C言語
- C#名前空間完全ガイド:構成、スコープ、ベストプラクティス
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
- C++クラステンプレート完全ガイド:実践的なジェネリックプログラミング
- C言語演算子完全ガイド:算術・関係・論理・ビット演算子
- C言語ユーザー定義関数の4つの実証済みパターン
- Cプログラミング入門:初心者向け包括チュートリアル
- C言語の関数マスター:構造、宣言、ベストプラクティス
- C言語可変長引数のマスター:実践ガイド
- C++プログラミング言語:概要と主要機能