�� 5 �� Overload �� Template 

5.1 �֐��̃I�[�o�[���[�h�Ƃ�

C ����ŁA��‚̒l���r���đ傫���ق���ԋp����֐����������Ƃ��܂��B

1 int max(int x, int y)  
2 {  
3         if( x > y )  
4                 return x;  
5         else  
6                 return y;  
7 }

�֐����Ăяo�����́A

int i = max( 1 , 2 ); 

�ȂǂƂ���΂悢�ł��傤�B

���āA�����Ŗ��ƂȂ�̂��A������ double �^��n�������ꍇ�ł��B
max �֐��͈����� int ������Ă���̂ŁA 

int i = max( 1.5 , 2.0 ); 

���Ƃ��邱�Ƃ͂ł��܂���B
�����������ꍇ�A C ����ł� max �̖��O��ύX���邵������� ����ł����B

1 int max_int(int x, int y)  
2 {  
3         if( x > y )  
4                 return x;  
5         else  
6                 return y;  
7 }  
8 double max_double(double x, double y)  
9 {  
10         if( x > y )  
11                 return x;  
12         else  
13                 return y;  
14 }

���̖����������ׂ� C++ ����ł͓����֐����ł��������Ⴆ�ΈႤ�֐��Ƃ��Ĉ��� ���Ƃ��ł���悤�ɂȂ�܂����B
���̂��Ƃ��֐��̃I�[�o�[���[�h (Overload) �Ƃ����� ���B

1 int max(int x, int y)  
2 {  
3         if( x > y )  
4                 return x;  
5         else  
6                 return y;  
7 }  
8 double max(double x, double y)  
9 {  
10         if( x > y )  
11                 return x;  
12         else  
13                 return y;  
14

�Ăяo�����́A

 int i = max( 1,2 );  //max(int,int) ���Ă΂��
 double j = max( 1.5,2.2 ); //max(double, double)���Ă΂��

�Ƃ��܂��B

5.2 Template �Ƃ�

5.1�� �� max �֐��͈������Ⴄ�����ŕϐ��̒��g�͑S�������ł����B
���̏ꍇ�A�킴�킴 ����������ς����֐�������������͖̂ʓ|�ł��B
�����œo�ꂷ��̂� Template �ł��B ���̃R�[�h�����Ă��������B

1 template<typename T>  
2 T my_max(T x,T y)  
3 {  
4         if( x > y )  
5                 return x;  
6         else  
7                 return y;  
8 }

T �^�Ƃ����V�����^�����o���Ă��܂��B
���̌^�͌Ăяo�����ɃR���p�C���������I�Ɍ^ �𔻒f���ď������s���Ă���܂��B

�֐��̌Ăяo����

 int i = my_max( 1,2 );
 double j = my_max( 1.5,2.2 );

�ƂȂ�܂��B
������ 1 ��n�����ꍇ�A T �^�� int �^�ɒu���������܂��B
���l�� 1.5 ��n���� �ꍇ�A T �^�� double �^�ɒu���������܂��B

 [template �̎g����]

 template<typename �V������`����^�̖��O > 

�v���O�������X�g

5.1�̃v���O����
5.2�̃v���O����

�Q�l����

[1] �n�[�o�[�g�E�V���g��, �g�b�v�X�^�W�I��, �ƏK C++ ������.