// ( r3.C ) // 関数のオ−バロ−ド // #include // オ−バロ−ドは多重定義とも言う #include #include // exit use void error( char* ) ; // 使う関数が下にある場合は、宣言が必要である int calc( int,int ) ; double calc( double,int ) ; double calc( double x,double n ) ; // 引数の型さえ分かればよい float calc( float x,int n ) ; void main() { cout << calc( 3,2 ) << "\n" ; cout << calc( 3.5,2 ) << "\n" ; cout << calc( 3.5,2.5 ) << "\n" ; cout << calc( 3.5f,2 ) << "\n" ; cout << calc( 3.0f,-2 ) << endl ; // \n の代わりに endl でもよい } void error( char* p ) { cerr << p << "\n" ; exit(1) ; } int calc( int x,int n ) { if ( n < 0 ) error("Error-1 !") ; return x*n ; } double calc( double x,int n ) { if ( n < 0 ) error("Error-2 !") ; double p = double(n) ; return x*p ; } double calc( double x,double n ) { if ( n < 0.0 ) error("Error-3 !") ; return x*n ; } float calc( float x,int n ) { if ( n < 0 ) error("Error-4 !") ; float p = float(n) ; return x*p ; } //void main() {} もし main がここにあれば、関数の宣言はいらない /* [結果] 6 7 8.75 7 Error-4 ! */