|
int max_int(int a, int b) { return ( a > b ) ? a : b; } double max_dbl(double a, double b) { return ( a > b ) ? a : b; } void main(void) { int i1 = 1, i2 = 2, ir; double d1 = 1.0, d2 = 2.0, dr; ir = max_int(i1, i2); dr = max_dbl(d1, d2); }
C++でオーバーロードを用いると同じ関数名にすることができるが、必要となる型全てのオーバーロード関数を定義する必要がある。template <class T> T max(T a, T b) { return ( a > b ) ? a : b; } void main() { int i1 = 1, i2 = 2, ir; double d1 = 1.0, d2 = 2.0, dr; ir = max<int>(i1, i2); dr = max<double>(d1, d2); }
複数のデータ型の処理を一つにまとめることができるため、コード量を大幅に削減することができる。