欢迎来到天天文库
浏览记录
ID:48047049
大小:576.50 KB
页数:66页
时间:2020-01-13
《《面向对象程序设计》讲义7.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《面向对象程序设计》讲义第7章7.1C++类的构成关键字:class例如:classpoint{intx,y;public:voidsetpoint(int,int);};第7章类的定义及其类对象的封装性7.1.1私有成员和公有成员1.私有成员a.关键字:private(有时可省略)b.访问权限:只限于通过成员函数来访问,也就是说只有类本身能够访问它,任何类以外的函数对私有数据的访问都是非法的。2.公有成员a.关键字:public(不能省略)b.访问权限:允许类的使用者来访问它。7.1.2类的构造7.2成员函数的定义例如:前面
2、定义的point类,其成员函数的定义为:voidpoint::setpoint(intvx,intvy){……}定义成员函数时的注意事项:(1).在所定义的成员函数之前应缀上类名,在类名和函数之间加上分隔符“::”。(2).函数的返回类型一定要与函数声明的类型相匹配。(3).在定义成员函数时,应同时给出参量类型和参量名。内置函数的定义方式:(1).隐式定义(2).显式定义:最前面加关键字:inline7.3类与对象7.3.1类与对象的关系类与对象的关系~整型int和整型变量i的关系创建对象的两种方法:(1).在定义类的同时创建
3、对象例如:classdata{//…...}tt;(2).在使用时定义对象(常用)datatt;7.3.2类的使用例如:classpoint{intx,y;public:voidsetpoint(intvx,intvy){x=vx;y=vy;}};voidf1(){pointp1;p1.setpoint(10,10);//…}voidf2(){pointp1;point*p2;p2=&p1;p2->setpoint(10,10)}7.3.3名字解析classrealset{//定义一个实数集合类intcard;floatele
4、ms[16];public://…voidprint();};classintset{//定义一个整数集合类intcard;intelems[16];public://…voidprint();};voidf(){intsetis;realsetrs;is.print();//调用的是intset中的print()函数rs.print();//调用的是realset中的print()函数}7.4构造函数与析构函数构造函数和析构函数的特点:(1)它们都没有返回值,定义时不需指出类型。(2)它们不能被继承。(3)构造函数可以有缺省
5、参数。(4)析构函数可以是虚的(virtual),但构造函数不行。(5)不可取它们的地址。(6)不能用常规调用方法调用构造函数;当使用完全限定名(带对象名、类名和函数名)时可以调用析构函数。(7)当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动地调用析构函数。7.4.1构造函数定义构造函数应注意的问题:(1)构造函数的名字必须与类名相同。(2)构造函数没有返回值,在声明和定义时不能说明它的类型。(3)构造函数的功能是对对象进行初始化,初始化的构造函数数据成员一般均为私有成员。构造函数举例:#include
6、ostream.h>classqueue{//定义定义一个整型队列类intq[100];//用数组q来存放队列中的各个元素intsloc,rloc;//sloc表示队列尾,rloc表示对列头public:queue();//声明构造函数voidqput(inti);//往队列中增加元素的函数intqget();//从队列中提取元素的函数};queue::queue(){sloc=rloc=0;//给队列类的两个私有变量赋初值cout<<“queueinitialized”;//在屏幕上输出对象已//初始化的信息}voidq
7、ueue::qput(inti);{if(sloc==100)//若sloc为100,表明队列已满{cout<<“queueisfull”;return;}sloc++;q[sloc]=i;//在队列尾后追加队列元素i}intqueue::qget(){if(rloc==sloc)//若队列头和队列尾相交,队列中无元素{cout<<“queueisempty”;return0;}rloc++;)//将队列头标识后移,取出第一个元素returnq[rloc];}main(){queuea,b;//定义queue的两个对象
8、a和ba.qput(10);//往两个队列对象中追加元素b.qput(20);a.qput(20);b.qput(19);cout<
此文档下载收益归作者所有