∥6付27 #include <iostream. h> #define doub(x)x *2 int main( i for(int i=l; K<=3; i++) cout<<i<<doubled is <<doub(i)<<end; cout<< 1+2 doubled is <<doub(1+2<<endl; return 0: ∥628 #include <iostream.h> inline int doub(int x) freturn x*2;) int main( i for(int i=l; K<=3; i++) cout<<i<<doubled is <<doub(i)<<end; cout<<1+2 doubled is<<doub(1+2<<endl turn 0
// 例2.7 #include <iostream.h> #define doub(x) x*2 int main( ) { for(int i=1;i<=3;i++) cout<<i<<" doubled is "<<doub(i)<<endl; cout<<"1+2 doubled is "<<doub(1+2)<<endl; return 0; } // 例2.8 #include <iostream.h> inline int doub(int x) { return x*2; } int main( ) { for(int i=1;i<=3;i++) cout<<i<<" doubled is "<<doub(i)<<endl; cout<<"1+2 doubled is "<<doub(1+2)<<endl; return 0; } 10
237函数原型 返回类型函数名(参数表); ∥629 #include <iostream.h> void write((char*s);/函数原型或叫函数申明 void maino i write( hello, world ) void write((char*s)无分号 i cout<<s<<endl; j
2.3.7 函数原型 返回类型 函数名(参数表); //例2.9 #include <iostream.h> void write(char *s); //函数原型或叫函数申明 void main( ) { write("Hello, world!"); } void write(char *s)无分号 { cout<<s<<endl; } 11
238带有缺省参数的函数 C++在说明函数原型时,可以为一个或多个参数指定缺省参数值, 以后调用此函数时,若省略其中某一实参,C++自动以缺省值作为 相应參数的值。 int special(int x=5, float y=5.3); 合法的调用; specialo pecial( 25) special(100, 79.8) 说明: (1)所有取缺省值参数都必须出现在不取缺省值参数的右边。 int fun( (int i, int j=5,intk)是错误的 int fun (int i, int k, int j==5)是正确的 (2)调用时,若某个参数省略,则其后的参数皆应省略。 不合法的调用; special( 21.5)
2.3.8 带有缺省参数的函数 C++在说明函数原型时,可以为一个或多个参数指定缺省参数值, 以后调用此函数时,若省略其中某一实参,C++自动以缺省值作为 相应參数的值。 int special(int x=5, float y=5.3); 合法的调用; special(); special(25); special(100,79.8); 说明: (1)所有取缺省值参数都必须出现在不取缺省值参数的右边。 int fun(int i,int j=5, int k) 是错误的 int fun(int i, int k,int j=5) 是正确的 (2)调用时,若某个参数省略,则其后的参数皆应省略。 不合法的调用; special(,21.5); 12
239函数重载 C++中,只要函数的參数的类型不同,或者參数个数不同,或者 兼有之,几个函数可以用相同的函数名。称为函数重载 ∥)例210 #include <iostream. h> int square(int i) i return ii; 3 float square(float f) i return f*f;] double square(double d) i return d*; j void main( i int i=12; float f=3. 4 double d=5.67: cout<<i<<k<<j<<=<<square(i<<endl; cout<<f<<x<<f<<=<<square(f<<endl; cout<<d<<xk<<d<<=<<square(d<<endl;
2.3.9 函数重载 C++中,只要函数的參数的类型不同,或者參数个数不同,或者二 兼有之,几个函数可以用相同的函数名。称为函数重载 //**例2.10 #include <iostream.h> int square(int i) { return i*i; } float square(float f) { return f*f; } double square(double d) { return d*d; } void main( ) { int i=12; float f=3.4; double d=5.67; cout<<i<<'*'<<i<<'='<<square(i)<<endl; cout<<f<<'*'<<f<<'='<<square(f)<<endl; cout<<d<<'*'<<d<<'='<<square(d)<<endl; } 13
∥)例211 #include <iostream.h> int mul(int x, int y) freturn x*y;y int mul(int x, int y, int z) freturn x*y*z; void main( inta=3,b=4,c=5; cout<<a<<*<<b<<='<<mul(a, b<<endl; cout<<a<<x<<b<<*<<c<<=<<mul(a, b, c)<<endl; 说明: (1)重载函数应在参数个数或参数类型上有所不同,编译才能识别调 用哪一个重载版本,即使返回类型不同也不行。 如: int mul(intx,inty);和 double mul(intx,inty);是不能重载的。 (2)一般而言,重载函数应对不同的参数情况执行相同的功能。 如:abs(intx);和abs(oatx);都是求绝对值,一个是整数的绝对值 ,一个是实数的
//**例2.11 #include <iostream.h> int mul(int x, int y) { return x*y; } int mul(int x, int y, int z) { return x*y*z; } void main( ) { int a=3,b=4,c=5; cout<<a<<'*'<<b<<'='<<mul(a,b)<<endl; cout<<a<<'*'<<b<<'*'<<c<<'='<<mul(a,b,c)<<endl; } 说明: (1)重载函数应在参数个数或参数类型上有所不同,编译才能识别调 用哪一个重载版本,即使返回类型不同也不行。 如:int mul(int x, int y) ;和 double mul(int x, int y); 是不能重载的。 (2)一般而言,重载函数应对不同的参数情况执行相同的功能。 如:abs(int x); 和 abs(float x);都是求绝对值,一个是整数的绝对值 ,一个是实数的。 14