类的封装性

上传人:新** 文档编号:488423264 上传时间:2023-02-12 格式:DOC 页数:19 大小:118KB
返回 下载 相关 举报
类的封装性_第1页
第1页 / 共19页
类的封装性_第2页
第2页 / 共19页
类的封装性_第3页
第3页 / 共19页
类的封装性_第4页
第4页 / 共19页
类的封装性_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《类的封装性》由会员分享,可在线阅读,更多相关《类的封装性(19页珍藏版)》请在金锄头文库上搜索。

1、C+讲稿1 输入、输出语句 输出语句 例 输出 10、 16、 8 进制整数 /ex2_8.cpp #include iostream.h #include iomanip.h void main() int a=1508; coutsetw(12)Decimal:decaendl; coutsetw(12)Hexadecimal:hexaendl; coutsetw(12)Octal:octaabc;double d=ab?a:b;double e=cd?c:d;coutmax=setprecision(10)eendl;运行结果是:456.7847623784.65764899.5 Ima

2、x=23784.657652 函数重载函数重载同一个函数名可以用于多个函数的定义,即用于多个函数的实现,称函数重载。函数的 函数名相同,它们的差别就在于参数的类型或个数不相同。编译系统能够唯一地确定调用哪 个函数,就利用调用时所传递的实参类型和个数,以及它们的顺序是否跟该函数的定义和说 明一致。因此实现同名函数重载,一定要在函数定义时函数参数的类型和个数或顺序上有所 不同,否则实现不了同名函数的重载。例 函数重载举例/ex5_4.cpp#include iostream.hint max(int,int);int max(int,int,int);double max(double,doubl

3、e);double max(double,double,double);void main()coutmaxi2=max(5,6)endl; coutmaxi3=max(5,7,6)endl; coutmaxd2=max(5.7,6.3)endl; coutmaxd3=max(5.3,7.8,7.3)y? x:y;int max(int x,int y,int z)int c=max(x,y);return zc? z:c;double max(double x,double y)if(xy)return x;else return y;double max(double x,double y

4、,double z)double c=max(x,y);double d=max(c,z);return d;运行结果:maxi2=6maxi3=7maxd2=6.3maxd3=7.8以上例题可见,4个函数的函数名都是max,但形参的类型和个数不同,编译系统 根据实参的类型和个数可以区分出要调用的是哪个函数。函数参数的默认值调用函数时,若所用的实参有一个经常用的值,此时说明函数原型时,可以用该值作为 函数参数的默认值,凡给过默认值的参数,在调用时可以给实参,也可以不给实参(此时实 参为默认值)。下例是个延时函数,调用时给实参按实参延时,不给实参按默认值延时。例 函数默认值举例/ex5_5.cp

5、p#include iostream.hvoid delay(int t)if(t=0)return;for(int i=0;it;i+);couti=iendl;void main()void delay(int=1000); / 声明默认值参数delay(0);delay(50);delay(500);delay();delay(5000);运行结果:i=50i=500i=1000 (默认值参数得到的结果)i=5000如果函数参数有多个,可以全部声明为默认参数,也可以只有部分参数声明为默认值。部分参数有默认值时,默认参数应从右至左逐个给出。若有三个函数参数的add()函数,默认值有如下声明

6、:int add(int=5,int=7,int=8);int add(int,int=7,int=8);int add(int,int,int=8);int add(int=5,int=7,int);int add(int,int=7,int);/ 正确,全部参数声明为默认值/ 正确,两个参数声明为默认值/ 正确,一个参数声明为默认值/ 错,违背了自右至左逐个给出的原则 / 错,违背了自右至左逐个给出的原则注意,带有默认参数的重载函数,可能会引起调用的歧义性,如有一组重载函数的原型说明 如下:int fu(int);int fu(int, int=8);int fu(int, int=8,i

7、nt=9);则调用时若用表达式fu(12),编译系统就区分不出调用上面三个函数中的哪一个,因此 在声明函数参数默认值时,应避免这种情况的发生,上面这样的重载函数,不声明默认 值时,它们的重载仍然有效。3类 类的成员有二种,数据成员和成员函数,数据成员又称为属性,成员函数又称为方法 操作或实现。通常成员函数是处理数据成员的,如果成员函数与数据成员毫无关系,那么该 成员函数就没有存在的必要了。类的定义格式一般分成二部分,一部分是说名部分,说明类 中的数据成员和成员函数,另一部分是实现部分,就是定义成员函数。说明部分表明了该类 有什么功能,实现部分是实现这些功能的详细过程,用户通常只关心说明部分,以

8、便知道如 何来使用该类的功能。类的一般定义格式如下:(1) 说明部分class 类名public:数据成员和成员函数private:数据成员和成员函数protected:数据成员和成员函数;(2) 成员函数的实现部分 简单复数运算类示例/ex7_1.h#include iostream.h#include math.h/类的说明部分class CComplexprivate:double real;double imag;public:void Init(double r,double i);double GetReal();double GetImag();double GetAbs();/

9、类的实现部分void CComplex:Init(double r,double i)real=r;imag=i;inline double CComplex:GetReal()return real;inline double CComplex:GetImag()return imag;double CComplex:GetAbs()double t;t=real*real+imag*imag;return sqrt(t);4 对象类是一种抽象的数据类型,编译系统并不为之分配可供使用的内存,用户只能使用类的“变量”这好比C语言中的结构体,实际应用中只能使用结构体的变量而不能直接使用结 构体类

10、型一样。由类定义的“变量”通常称为“对象”或“实例”。属于同一类的对象,具 有相同的属性和方法,属于不同类的对象,一般是不会具有完全相同的属性和方法。由类定 义对象的方法与由结构体定义变量的方法极其相似。通常有二种方法定义对象。(1) 在声明类的同时,直接定义对象,格式为:class 类名声明类的成员对象名;(2) 声明类以后,在使用对象前定义,这时可以省略关键字class直接使用类名,格式为: 类名 对象名;对象的使用例 7.2 写出程序的运行结果/ex7_2.cpp#include ex7_1.hvoid main()CComplex A,*PA=&A;A.Init(1.5,2.4);co

11、utreal of complex A=A.GetReal()tGetReal()endl; coutimage of complex A=A.GetImag()tGetImag()endl; coutAbs of complex A=A.GetAbs()tGetAbs()endl;程序运行结果为:real of complex A=1.5 1.5image of complex A=2.4 2.4Abs of complex A=2.83019 2.83019例 7.3 指出下面程序中的语法错误。/ex7_3.cpp#include iostream.h#include math.hclas

12、s CPointint x;int y;public:void SetX(int k)x=k;void SetY(int k)y=k;int GetX()return x;int GetY()return y;void main()CPoint p1,p2;pl.x=5;/错误:pl.x是私有成员.改用pl.SetX(5);pl.y=10;/错误:pl.y是私有成员 改用p1.SetY(10);p2.SetX(15);p2.SetY(20);double dl二pl.x*pl.x+pl.y*pl.y;/错误:pl.x 和 pl.y 是私有成员 改用: /double d1=p1.GetX()*p1.GetX()+p1.GetY()*p1.GetY();dl=sqrt(dl);double d2=p2.GetX()*p2.GetX()+p2.GetY()*p2.GetY(); d2=sqrt(d2);cou t p1到原点的距离为d1endl;coutp2到原点的距离为d2endl;5 构造函数定义类是一种用户自定义的数据类型,它可能很简单,也可能很复杂。类定义一个对象时,编 译系统将为对象分配内存,并进行必要的初始化工作。对象的初始化

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号