面向对象程序设计语言
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; cout << add( 3.5, 4.7) << endl; }
1. 函数名不改变
2. 函数参数类型改变
3. 函数参数个数改变
© 2006.02~2006.06
面向对象程序设计语言
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; cout << add( 3.5, 4.7 ) << endl; }
© 2006.02~2006.06
面向对象程序设计语言
五、函数模板
采用函数模板可以简化函数的定义.
template <class T> T add( T x, T y ) {
© 2006.02~2006.06
面向对象程序设计语言
四、函数的重载
对add函数进行重载:
函数重载(Overload): 在不改变函数名的前提 下,改变函数的参数,以 重新定义一个新函数.
int add( int x, int y) {
return x + y; }
float add( float x, float y) {
int add( int , int ); // 声明和类型有关
© 2006.02~2006.06
面向对象程序设计语言
三、函数的调用
在定义函数之后, 使用该函数.
int add( int x = 0, int y = 0 ) {
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; }
1. 嵌套调用
© 2006.02~2006.06
面向对象程序设计语言
三、函数的调用
函数的调用形式
int addOne(int x) {
return ++x; }
int add(int x, int y) {
return addOne(x) + addOne(y); }
void main(void) {
面向对象程序设计语言
一什么是函数
C/C++中的函数与数学中的函数的异同.
SayHello ( )
#include <iostream> using namespace std; void SayHello(void) {
cout << “ Hello World! “; }
它是C/C++中的函数 但在数学中没有这样的函数
是否觉得为每种数据类型写一个重 载函数比较麻烦?
int add( int x = 0, int y = 0 ) {
return x + y; }
float add( float x = .0f, float y = .0f ) {
return x + y; }
double add( double x, double y ) {
cout << add(1) << endl; }
2. 递归调用
© 2006.02~2006.06
面向对象程序设计语言
四、函数的重载
如果我们要计算两个浮点数的加法 运算该怎么办?
int add( int x, int y) {
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; cout << add( 3.5, 4.7) << endl; }
思考
函数重载有什么好处? 函数模板有什么好处?
© 2006.02~2006.06
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
C/C++中的函数与数学中的函数的异同.
C/C++函数
他们是包含关系
这是什么函数?
数学的函数
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
给C/C++中的函数下一个定义:
定义: 函数是“分而治之”思想的体现,是C/C++
cout << add(1, 2) << endl; }
1. 嵌套调用
© 2006.02~2006.06
面向对象程序设计语言
三、函数的调用
函数的调用形式
int add(int x) {
if(x > 5) {
return x; } return add(++x); }
void main(void) {
int add( int x = 0, int y = 0 ) {
return x + y; }
函数名:
要符合C/C++中标识符命名规则
函数体: 函数算法部分
© 2006.02~2006.06
面向对象程序设计语言
二、函数的定义与声明
int add( int x, int y);
void main(void) {
1. 形参在函数定义时给出的. 2. 实参在函数调用时给出的. 3.实参的值在函数调用时传给形参.
© 2006.02~2006.06
面向对象程序设计语言
三、函数的调用
参数默认值
int add( int x = 0, int y = 0 ) {
return x + y; }
void main(void) {
函数重载和默认参数的配合使用要 注意不要出现矛盾.
int add( int x = 0, int y = 0 ) {
return x + y; }
float add( float x = .0f, float y = .0f ) {
return x + y; }
double add( double x, double y ) {
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; cout << add( 3.5, 4.7 ) << endl; }
1. 函数的实现部分(算法)要完全一致.
2. 参数的类型要能支持算法.
© 2006.02~2006.06
面向对象程序设计语言
cout << add( 1, 2 ) << endl; }
int add( int x = 0, int y = 0 ) {
return x + y; }
What’s the difference between definition and declaration?
int add( int x, int y);
return x + y; }
void main(void) {
cout << add( 1, 2 ) << endl; cout << add( 3.5, 4.7 ) << endl; cout << add() << endl; }
© 2006.02~2006.06
面向对象程序设计语言
五、函数模板
int add ( int x , int y )
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
C/C++中的函数与数学中的函数的异同.
y=f(x)
y = x2 + x + 1
z=f(x,y)
z= x+y
int add ( int x , int y )
因变量类型 <-> 返回值类型 自变量: 元 <-> 参数 函数名
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
C/C++中的函数与数学中的函数的异同.
y=f(x)
y = x2 + x + 1
z=f(x,y)
z= x+y
int add ( int x , int y )
因变量类型 <-> 返回值类型 自变量: 元 <-> 参数 函数名
© 2006.02~2006.06
四、函数的重载
函数参数类型 改变的重载:
函数参数个数 改变的重载:
函数返回值为什 么不能作为重载
的依据?
int add( int x, int y) {
return x + y; }
float add( float x, float y) {
return x + y; }
float add( float x ) {
中完成某个特定功能的最小单元。
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
分而治之
FALSE
TRUE
© 2006.02~2006.06
面向对象程序设计语言
一、什么是函数
C/C++中函数的构成:
参数列表: 形参列表/实参列表