如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第七章类与对象C++引入类类型抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。抽象实例:时钟抽象实例:人在研究问题时,侧重点不同,可能会产生不同的抽象结果;解决同一问题时要求不同,也会产生不同的抽象结果。如何实现抽象?定义和使用类的基本过程类的定义:类的成员构成类定义举例:时钟类类成员的访问控制类的定义:对成员的访问控制公有成员私有成员保护成员类定义举例:时钟类类的实现classClock{private:intHour,Minute,Second;public:voidSetTime(inth,intm,ints);//给出函数原型voidShowTime();//给出函数原型};类的使用类外访问成员的方法举例:一个比较完整的Clock类//实现Clock类中的成员函数//使用Clock类总结:定义和使用类类型的过程在定义类时,把可以被外部访问的成员说明为public属性,作为外部访问类中成员的接口。把不能被外部访问的成员说明为private或protected属性。请思考练习一min=array.类的构造函数提供了这种自动化功能。temp=data[i];Clockobj1,obj2;classClockclassClock通过自定义拷贝构造函数,可以准确地复制数据,以免发生错误。voidmain()实现类:实现类中成员函数的逻辑CStringobj(64);设计一个三角形类CTriangle,该类满足下述要求:c)有一个成员函数GetCircumference,用于获得三角形的周长。Counterobj1,obj2;例子:简单int数组类第二步:定义类intIntArray::getSize(){returnARRAY_SIZE;}intIntArray::getMaxVal(){inttemp=data[0];for(inti=1;i<ARRAY_SIZE;i++){if(data[i]>temp)temp=data[i];}returntemp;}intmain(){IntArrayarray;inti,size,v,max,min;size=array.getSize();cout<<"pleaseinput"<<size<<"numbers:"<<endl;for(i=0;i<size;i++){cin>>v;array.setVal(i,v);}max=array.getMaxVal();min=array.getMinVal();cout<<"maxvalueis:"<<max<<endl;cout<<"minvalueis:"<<min<<endl;return0;}请思考改进:为IntArray类增加公用的私有函数intIntArray::getVal(intcondition){inttemp=data[0];for(inti=1;i<ARRAY_SIZE;i++){if(condition==0){if(data[i]>temp)temp=data[i];}else{if(data[i]<temp)temp=data[i];}}returntemp;}以改进了的IntArray类为例,私有的成员函数getVal在类外(如main函数)是不能被调用的。对象指针构造函数的引入如何解决数据成员的初始化问题构造函数例:为Clock类添加构造函数实现构造函数:初始化数据成员举例传给构造函数实参的两种方式重载构造函数具有缺省参数的构造函数缺省的构造函数析构函数举例:为Clock类添加析构函数voidfunc(){Clockobj1,obj2;……}voidmain(){func();}//输出:Clockobjdestroyed!Clockobjdestroyed!析构函数的典型用法:CString加上析构函数来解决该问题如果没有定义拷贝构造函数,那么编译器会为该类产生一个缺省的拷贝构造函数。this指针是一个隐含的指针,它指向了正在被成员函数操作的那个对象。对象的指针->公有数据成员Pointobj3=obj2;//调用缺省的拷贝构造函数如果开发学籍管理软件,那么关心的是学生的姓名、性别、年龄、籍贯、所在学院等相关信息。intsetVal(intpos,intval);voidClock::addMinute(intm){Minute+=m;}Counter(intv):value(v){}retu