デフォルト引数

■概要

デフォルト引数とはC++で実装された機能のことで、
仮引数に対して初期値を設定することができます。
初期値を設定された仮引数は、実引数で値を渡さなくても、
関数を呼び出すことが可能となります。
仮引数を設定する場所はプロトタイプ関数宣言で行います。
関数定義でも行えますが、誰でも確認できることを考えると
プロトタイプの方に記述したほうがいいと思います。

●書式
	・書式例
		戻り値の型 関数名(仮引数の型 仮引数名 = 初期値)

	・具体例
		void InitPlayerParam(int hp = 10, int mp = 10);

	・コード
		Test.h
			#ifndef TEST_H_
			#define TEST_H_

			void InitPlayerParam(int hp = 10, int mp = 10);

			#endif

		Test.cpp
			#include <stdio.h>
			#include "Test.h"

			void InitPlayerParam(int hp, int mp)
			{
				printf("Hp = %d, Mp = %d\n", hp, mp);
			}

		main.cpp
			#include "Test.h"

			void main(void)
			{
				// Hp = 10, Mp = 10
				InitPlayerParam();

				// Hp = 100, Mp = 10
				InitPlayerParam(100);

				// Hp = 200, Mp = 300
				InitPlayerParam(200, 300);
			}

			実行結果:
				Hp = 10, Mp = 10
				Hp = 100, Mp = 10
				Hp = 200, Mp = 300

		上のコードのようにInitPlayerParamで引数を指定しなかった場合
		仮引数のhpとmpには10が代入された状態になります。

●メリット
	・オプション機能としての引数の使用に有効
		デフォルト引数を指定することで、標準の関数の引数指定に
		オプション機能としての引数を追加することができます。

		描画関数に拡縮と回転角度をオプションとして追加した描画関数:
			void Draw(float x, float y, float angle = 0.0f, float scale = 1.0f);

■デフォルト引数の注意点

デフォルト引数は実引数指定が確定している引数の後ろに指定しなければいけません。
以下の書き方はエラーになります。

	void InitPlayerParam(int hp = 10, int mp);

「int hp = 10」のデフォルト引数が実引数指定が確定している
mpの前に来ているので、コンパイルエラーになります。
仮引数は必ず引数の末尾に指定して下さい。