C++ 第五章 成员函数.ppt
《C++ 第五章 成员函数.ppt》由会员分享,可在线阅读,更多相关《C++ 第五章 成员函数.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计第五章 成员函数成员函数的定义和调用成员函数的定义和调用函数的参数函数的参数内联函数内联函数运算符和表达式运算符和表达式构造函数和析构函数构造函数和析构函数静态成员函数静态成员函数函数的重载函数的重载5.1 成员函数的定义和调用对象对象图书图书1 1MyBook1:CBook书名:程序设计书名:程序设计总页数:总页数:280280版版 本:本:2 2.char*m_pczName:int nTotalPageint nEdition.返回书名返回书名返回总页数返回总页数返回版本号返回版本号.char*GetBookName();int GetTotalPage();int Ge
2、tEdition();.一、成员函数的定义格式一、成员函数的定义格式一、成员函数的定义格式一、成员函数的定义格式5.1 成员函数的定义和调用class 类名类名public:;private:;protected:;;class Circleprivate:double x,y,r;public:void print();void set(double x1,double y1,double r1);double area()return(3.14*r*r);double lenth()return(2*3.14*r);void Circle:print()cout圆心圆心:(x,y)endl
3、;cout半径半径:rendl;void Circle:set(double x1,double y1,double r1)x=x1;y=y1;r=r1;代码较少的成员函数可直接在代码较少的成员函数可直接在类中进行定义;代码较多的成员函类中进行定义;代码较多的成员函数可在类中进行原型的说明,在类数可在类中进行原型的说明,在类外进行定义。外进行定义。在类外进行定义成员函在类外进行定义成员函数时要加上所属的类名。数时要加上所属的类名。二、成员函数的调用二、成员函数的调用二、成员函数的调用二、成员函数的调用5.1 成员函数的定义和调用一般有两种形式:一般有两种形式:对象名对象名.函数名函数名(实参实
4、参1,实参实参2,);对象指针对象指针函数名函数名(实参实参1,实参实参2,);例如:例如:void main()Circle mycircle;cout “The area of circle=”mycircle.area();二、成员函数的调用二、成员函数的调用二、成员函数的调用二、成员函数的调用一般有两种形式:一般有两种形式:对象名对象名.函数名函数名(实参实参1,实参实参2,);对象指针对象指针函数名函数名(实参实参1,实参实参2,);例如:例如:void main()Circle *pcircle;cout “The area of circle=”area();5.1 成员函数的定
5、义和调用一、为什么要引进内联函数一、为什么要引进内联函数?#include int isnumber(char);void main()char c;while(c=cin.get()!=n)if(isnumber(c)cout“Digitn”;else cout=0&ch=9)?1:0;#include int isnumber(char);void main()char c;while(c=cin.get()!=n)if (ch=0&ch=9)?1:0)cout“Digitn”;else cout“Not Digitn”;5.2 内联函数二、二、内联函数的定义内联函数的定义inline 类
6、型说明符类型说明符 被调用函数名被调用函数名(形参表形参表)内联函数具有一般函数的特性,它与一般内联函数具有一般函数的特性,它与一般函数的不同之处仅在于函数调用的处理。内联函数的不同之处仅在于函数调用的处理。内联函数在调用时,是将调用表达式用内联函数体函数在调用时,是将调用表达式用内联函数体来替换。来替换。5.2 内联函数#include inline int isnumber(char);void main()char c;while(c=cin.get()!=n)if(isnumber(c)cout“Digitn”;else cout=0&chj)?i:j;与与运行内联函数运行内联函数和和
7、运行外部函数运行外部函数之间的所耗时间。三者分别运行之间的所耗时间。三者分别运行100 000 000次。次。i与与j循环变化。循环变化。析:clock()函数在函数在time.h中声明,如果除以中声明,如果除以 常数常数CLK_TCK,则为秒数。则为秒数。CLK_TCK一一 般内定为般内定为1000,表示每,表示每1000个时钟个时钟 单位等于单位等于1秒。它通常用来计算秒。它通常用来计算 系统运行所消耗的准确时间。系统运行所消耗的准确时间。练习练习一、一、隐式类型转换隐式类型转换5.3 运算符和表达式 其转换过程是由系统按照一定的转换规其转换过程是由系统按照一定的转换规其转换过程是由系统按
8、照一定的转换规其转换过程是由系统按照一定的转换规则自动完成的。则自动完成的。则自动完成的。则自动完成的。charshortintlong intunsigned char unsigned short unsigned intunsigned long floatdoublelong double一、一、隐式类型转换隐式类型转换5.3 运算符和表达式int a=5;float x=a/2;int a=5;float x=(float)a/2;/计算结果计算结果x值为值为2.0/计算结果计算结果x值为值为2.5int ival=5;ival=3.54+3;/计算结果计算结果x值为值为6二、二、显
9、式类型转换显式类型转换5.3 运算符和表达式强制转换法的格式为:强制转换法的格式为:强制转换法的格式为:强制转换法的格式为:(类型名类型名类型名类型名)表达式表达式表达式表达式;如:如:如:如:(int)xint)x;注:注:注:注:(int)xint)x后,后,后,后,x x仍保持原类型,只是得到了仍保持原类型,只是得到了仍保持原类型,只是得到了仍保持原类型,只是得到了 一个一个一个一个intint型的中间变量,值为型的中间变量,值为型的中间变量,值为型的中间变量,值为x x的整数部的整数部的整数部的整数部 分分分分;(int)x+yint)x+y的意思为将的意思为将的意思为将的意思为将x
10、x x x转化为整型,再与转化为整型,再与转化为整型,再与转化为整型,再与y y y y 相加;相加;相加;相加;下面程序的功能为下面程序的功能为:从键盘读入若干整数,计从键盘读入若干整数,计 算并输出所读入数中正整数的平均值,忽略算并输出所读入数中正整数的平均值,忽略 输入的负数。当输入的值为输入的负数。当输入的值为0时,结束输入。时,结束输入。比如从键盘输入以下数:比如从键盘输入以下数:1 4 2 3 4 6 0则输出内容为则输出内容为:The average of non-negative number is 3.5 仔细阅读程序,填充其中没有完成的部分。仔细阅读程序,填充其中没有完成的
11、部分。注意:注意:(1)(1)输入数中的负数被忽略输入数中的负数被忽略 (2)(2)输出的平均值不能省略小数部分输出的平均值不能省略小数部分 A void main()int iValue;当前输入的整数值当前输入的整数值 int sum=0;输入的正整数的和输入的正整数的和 B ;统计输入的正整数的个数统计输入的正整数的个数 while(1)ciniValue;if(C )continue;if(iValue=0)D ;sum+=iValue;计算和计算和 num+;cout“nThe average of non-negative number is”E ;A#includeiostrea
12、m.hB int num=0C iValue0D breakE 1.0*sum/num (float)sum/num (double)sum/num5.4 函数的参数u值传递(值调用)值传递(值调用)值传递(值调用)值传递(值调用)u引用传递(引用调用)引用传递(引用调用)引用传递(引用调用)引用传递(引用调用)传值传值传值传值传地址传地址传地址传地址一、一、一、一、C+C+函数参数传递机制函数参数传递机制函数参数传递机制函数参数传递机制#include void swap(int,int);void main()int a=3,b=8;cout“a=”a“,b=”b endl;swap(a,
13、b);cout“after swappingn”;cout“a=”a“,b=”b endl;void swap(int x,int y)int temp=x;x=y;y=temp;a=3,b=8after swappinga=3,b=8 3 3 3 38 8 8 83 3 3 38 8 8 83 3 3 3栈栈tempyxbaswapmain传值传值#include void swap(int*,int*);void main()int a=3,b=8;cout“a=”a“,b=”b endl;swap(&a,&b);cout“after swappingn”;cout“a=”a“,b=”b
14、endl;void swap(int *x,int *y)int temp=*x;*x=*y;*y=temp;a=3,b=8after swappinga=8,b=3 3 3 3 38 8 8 80067:F0920067:F0920067:F0920067:F0920067:F0900067:F0900067:F0900067:F0903 3 3 3栈栈tempyxbaswapmain0067:F0920067:F0920067:F0920067:F0920067:F0900067:F0900067:F0900067:F090传地址传地址 调用函数的实参要用变量名,将实参变调用函数的实参要用
15、变量名,将实参变量名赋给形参的引用,相当于在被调用函数量名赋给形参的引用,相当于在被调用函数中使用了实参的别名。如中使用了实参的别名。如swap(a,b);在函数原型中该参数类型后面加上在函数原型中该参数类型后面加上&,如:,如:void swap(int&x,int&y);5.4 函数的参数二、引用作函数的参数二、引用作函数的参数二、引用作函数的参数二、引用作函数的参数#include void swap(int&x,int&y);void main()int a=3,b=8;cout“a=”a“,b=”b endl;swap(a,b);cout“after swappingn”;cout“
16、a=”a“,b=”b endl;void swap(int&x,int&y)int temp=x;x=y;y=temp;a=3,b=8after swappinga=8,b=3 3 3 3 38 8 8 8栈栈yxbaswap按值调用,实参为按值调用,实参为变量名变量名,形参为变量名;,形参为变量名;传址调用,实参为地址值,形参为指针;传址调用,实参为地址值,形参为指针;引用调用,实参为变量名,形参为引用名。引用调用,实参为变量名,形参为引用名。比较三种比较三种调用方式:调用方式:二、引用作函数的参数二、引用作函数的参数二、引用作函数的参数二、引用作函数的参数5.4 函数的参数当一个函数返回引
17、用时,它可以直接进行计算。当一个函数返回引用时,它可以直接进行计算。5.4 函数的参数三、引用作函数返回值三、引用作函数返回值三、引用作函数返回值三、引用作函数返回值 函数调用本身函数调用本身也可作为变量和对也可作为变量和对象来使用,这是引象来使用,这是引用概念在用概念在C+程序设程序设计中非常重要的应计中非常重要的应用。用。5.4 函数的参数 C+语言允许在函数被说明或定义时给语言允许在函数被说明或定义时给一个或多个参数指定默认值。一个或多个参数指定默认值。如:如:int fun1(int a,int b=5,int c=8);四、带默认参数的函数四、带默认参数的函数四、带默认参数的函数四、
18、带默认参数的函数5.4 函数的参数说明说明在设置默认值时要注意以下事项:在设置默认值时要注意以下事项:指定默认值时要从参数表的右端开始,在指指定默认值时要从参数表的右端开始,在指 定了默认值的参数的右边不允许出现没有指定了默认值的参数的右边不允许出现没有指 定默认值的参数。定默认值的参数。在函数调用时,给定的实参值将取代参数的在函数调用时,给定的实参值将取代参数的 默认值,没有给定实参值的将使用参数的默默认值,没有给定实参值的将使用参数的默 认值。认值。四、带默认参数的函数四、带默认参数的函数四、带默认参数的函数四、带默认参数的函数void f0(float a,int b,char c);v
19、oid f1(float a,int b,char c=B);void f2(float a,int b=4,char c=B);void f3(float a=1,int b=4,char c=B);float a=2.1;int b=5;char c=C;f3(a,b,c);/调用调用2.1,5,Cf3(a,b);/调用调用2.1,5,Bf3();/调用调用1,4,Bf1(a,b);/调用调用2.1,5,Bf0(a,b,c);/调用调用2.1,5,Cf0(a,b);f1(a);f2();/错误错误5.4 函数的参数5.4 函数的参数说明说明在设置默认值时要注意以下事项:在设置默认值时要注意
20、以下事项:不允许在函数原型和函数定义中,同时指定不允许在函数原型和函数定义中,同时指定 默认值。默认值。四、带默认参数的函数四、带默认参数的函数四、带默认参数的函数四、带默认参数的函数void f1(float a,int b,char c=B);void f1(float a,int b,char c=B)5.5 静态成员函数补充补充:静态数据成员静态数据成员#include class TC private:int m;static int n;public:void set()m=0;m+;n+;void disp()coutm“,”n 静态成员函数名静态成员函数名5.6 函数的重载 函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 第五章 成员函数 第五 成员 函数
限制150内