// 関数のデフォルト引数の体験
// int foo( int a = 0 , int b = 0 );

#include <iostream>

using namespace std;

void
foo( int a = 90, int b = 100 )
{
	int	x = a;
	int y = b;

	cout << " x = " << a << endl;
	cout << " y = " << b << endl;
}


int
main( )
{
	cout << "foo( )" << endl;
	foo( );

	cout << "foo( 20 )" << endl;
	foo( 20 );

	cout << "foo( 20, 30)" << endl;
	foo( 20, 30 );

	return 0;
}


/*
	1. 非常に便利です。C言語のように関数で I/F をまとめようとした時に
		引数が増えたりしてしまい、呼び側で不必要な引数を渡す徒労から
		解放されます。
	2. デフォルト引数を持つ仮引数の後の仮引数は全てデフォルト値を持つ
		必要があります。だから下記例はダメです。
			int bar( int a = 0 , char c );
	3. overload の一歩手前(?)ってイメージがあります。個人的には。
*/


// end of file