C++类和对象

上传人:仙*** 文档编号:243052748 上传时间:2024-09-14 格式:PPT 页数:54 大小:2.36MB
返回 下载 相关 举报
C++类和对象_第1页
第1页 / 共54页
C++类和对象_第2页
第2页 / 共54页
C++类和对象_第3页
第3页 / 共54页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C+,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,参考:,C+,程序设计教程,p56p64,第五讲 类和对象(一),本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,类与对象概述,对象,:现实世界中某个具体的,物理实体,在计算机逻辑中的映射和体现。,现实中的,对象,都具有属性和行为。,类与对象概述,(cont.),类,:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体,本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,狗类,行为,吠叫,属性,名字,品种,年龄,颜色,class Dog,public:,void yelp();,private:,string name;,string breed;,int age;,string color;,;,映射,抽象,类的声明,class Dog /,类名,public:,void yelp();/,成员函数,private:,string name;,string breed;,int age;,string color;,;,数据成员,a_1,类的声明,(cont.),类的声明,class,public:,protected:,private:,;/,分号!,类的声明,(cont.),class TDate,public:,void setDate( const int aYear, const int aMonth, const int aDay );,bool isLeapYear() const;,void display() const;,private:,int m_iYear;,int m_iMonth;,int m_iDay;,;,a_2,类的声明,(cont.),类名,,class,是声名类的关键字,,是标示符,通常以,T,或者,C,开头,以示与对象,函数,变量区别,类的成员,包含,数据成员,和,成员函数,两部分,访问权限修饰符,,包括公有的,(public),,私有的,(private),和保护的,(protected),三类。,公有的成员用,public,来说明,一般为一些成员函数,它是提供给用户的接口功能。,私有的成员用,private,来说明,私有部分一般为类的成员变量,用来描述对象的属性,类的声明,(cont.),访问权限修饰符,类体内,类体外,private,protected,public,本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,类的定义,类的定义,类体内定义,类体外定义,类的定义即给出成员函数具体的功能实现,类的定义,(cont.),class TPoint,public:,void setX( int aX ) m_iX = aX; ,void setY( int aY ) m_iY = aY; ,void move( int aX, int aY ),m_iX += aX;,m_iY += aY;,void display() const,coutX:m_iXendl;,coutY:m_iYendl;,private:,int m_iX;,int m_iY;,;,类体内定义:,5_1,类的定义,(cont.),类体外定义:,:(),expression;,void Dog:yelp(),coutWo Wo!endl;,类的定义,(cont.),class TDate,public:,void setDate( const int aYear, const int aMonth, const int aDay );,bool isLeapYear() const;,void display() const;,private:,int m_iYear;,int m_iMonth;,int m_iDay;,;,a_2,类的定义,(cont.),void,TDate:,setDate( const int aYear,const int aMonth,const int aDay ),m_iYear = aYear;,m_iMonth = aMonth;,m_iDay = aDay;,bool,TDate:,isLeapYear() const,return(!(m_iYear%4),void,TDate:,display() const,coutm_iYear.m_iMonth.m_iDayendl;,a_2,类的定义,(cont.),注意,成员函数类体外定义时,必须在函数名前面加,“,类名,:,”,若无,“,类名,:,”,则该函数不是成员函数而是全局函数。,类体外定义成员函数时,,类体内必须声明该成员函数,!,不允许在类的声明部分对成员变量进行初始化。,将类的声明与定义分开,类的声明放到头文件,定义放到源文件中,本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,对象的声明与成员访问,狗类,行为,吠叫,属性,名字,品种,年龄,颜色,莱丝,行为,莱丝,.,吠叫,属性,莱丝,.,名字,:,莱丝,莱丝,.,品种,:,黑贝,莱丝,.,年龄,:,三岁,莱丝,.,颜色,:,黑色,声明莱丝是一只狗,对象的声明与成员访问,(cont.), ;,对象名表,一个对象,对象数组,指向对象的指针,多个对象,TDate date; Dog dog;,TDate today, tomorrow;,TDate *pDate;,TDate array10;,对象引用,Dog dg;,Dog &ref,= dg;,对象的声明与成员访问,(cont.),.;,.();,TDate today;,today.,setDate( 1998, 10, 19 ),;,bool isLeap = today.,isLeapYear(),;,TPoint point;,point.setX( 100 );,point.setY( 100 );,point.move( 50, 50 );,point.display();,对象的声明与成员访问,(cont.),-,;,-,();,TDate *pDate = new TDate;,pDate,-setDate,( 1998, 10, 19 ),;,bool isLeap = pDate,-isLeapYear(),;,delete,pDate;,TPoint *pPoint = new TPoint;,pPoint,-setX,(,100 );,pPoint,-setY,(,100 );,pPoint,-move( 50, 50 ),;,pPoint,-display(),;,delete,pPoint;,对象的声明与成员访问,(cont.),(*),.,;,(*),.,();,(&),-,();,(&),-,;,对象和指向对象的指针同样可以进行取地址和取值操作,对象的声明与成员访问,(cont.),TDate *pDate = new TDate;,(*pDate),.setDate( 1998, 10, 19 ),;,bool isLeap =,(*pDate),.isLeapYear(),;,delete pDate;,TPoint point;,(&point),-setX( 100 );,(&point),-setY( 100 );,(&point),-move( 50, 50 );,(&point),-display();,本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,实例化对象,类的实例化,栈区,堆区,静态存储区,(,全局区),实例化对象:栈区中的对象,法一,:,先声明类类型,再定义对象,推 荐,class Student,public:,void display() const, . . ,private:,int m_iNum;,string m_strName;,char m_cSex;,;,Student stud1;,/,class,Student stud1;,法二,:,在声明类的同时定义对象,class Student,public:,void display() const,coutnum: m_iNum endl;,coutname: m_strName endl; coutsex: m_cSex endl;,private:,int m_iNum;,string m_strName;,char m_cSex;,stud1,stud2;,实例化对象:栈区中的对象,(cont.),法三,:,不出现类名,直接定义对象,class,/,省略类名,public:,void display() const,coutnum: m_iNum endl;,coutname: m_strName endl;,coutsex: m_cSex endl;,private:,int m_iNum;,string m_strName;,char m_cSex;,stud1,stud2;,实例化对象:栈区中的对象,(cont.),注意,通常采用先定义类,后定义对象的方法,,其他方法不使用,对象占据内存单元而类类型不占据内存单元,以上方法创建的对象均在栈区,实例化对象:栈区中的对象,(cont.),1.,概念:用,new,创建的无名对象,存储在堆区,2.,建立堆对象,new,类名,new,类名,无符号整型表达式,实例化对象:堆区中的对象,可为无符号整型变量,实例化对象:堆区中的对象,(cont.),const int KArrSize = 100;,TDate *pdate = new TDate;,TDate *arry = new TDateKArrSize;,Dog *dog = new Dog;,Dog *dogArr = new DogKArrSize;,3.,释放堆对象,delete,指针名,delete ,指针名,例,1:A *ptr = NULL;,ptr = new A;delete ptr;,例,2:A *ptr = NULL;,ptr = new A5;delete ptr;,实例化对象:堆区中的对象,(cont.),注意,delete,只能回收由,new,返回的指针指向的内存空间,包括空指针。,一个指针只能,delete,一次。,删除对象数组时无论几维,array,,,delete,前都只有一个,。,确认不用的空间一定要,delete,。,实例化对象:堆区中的对象,(cont.),实例化对象:全局区中的对象,全局区中的对象和内置类型,static,变量存储类别规则是相同,class Student,public:,void setName( const string aName ),m_strName = aName,void display() const,coutm_strName m_iHour, m_iMinute, m_iSec;,int main(),cout sizeof(Time) endl;,return 0;,5_2,实例化对象:对象的存储,(cont.),注意,无论成员函数在类内还是在类外定义,成员函数都不占用对象的存储区,说成员函数是对象的只是从逻辑角度上说的,而非物理角度而言,对象的存储类别和内置类型变量相同,实例化对象:对象的存储,(cont.),实例化对象:对象的引用,思考:,对象中成员的引用方法?,成员的访问方式,回忆结构体的访问,#include ,#include ,using namespace std;,struct Student,string num;,char sex;,string name;,;,Student stu;,int main(),stu.num = 007;,stu.name = haha;,stu.sex = M;,cout stu.num, stu.sex, stu.name endl;,return 0;,通过对象名和,“,.,”,访问,通过对象指针访问,通过对象引用访问,成员的访问方式,成员的访问方式,(cont.),法一:,通过对象名访问,:,对象名,.,成员名,成员的访问方式,(cont.),public:,void display(),cout,X:,m_iXendl;,cout,Y:,m_iY,成员名,(*,对象指针,).,成员名,class TPoint,public:,void display(),cout,X:,m_iXendl;,cout,Y:,m_iYdisplay();,return 0;,5_4,法二:,通过对象引用访问,注意,对象引用与普通变量引用的定义方法相同,成员的访问方式,(cont.),class TPoint,public:,void display(),cout,X:,m_iXendl;,cout,Y:,m_iYendl;,void set( int aX, int aY),m_iX = aX;,m_iY = aY;,private:,int m_iX;,int m_iY;,;,int main( ),TPoint pt;,TPoint ,rp.display();,. .,5_5,对象引用,.,成员名,本次议题,类与对象概述,类,类的声明,类的定义,对象,对象的声明与成员访问,实例化对象,类和对象的简单应用举例,类和对象的简单应用举例,通过几个例子说明怎样用类设计程序,class Time,public:,int m_iHour;,int m_iMinute;,int m_iSec;,;,int main(),Time current;,cout current.m_iHour;,cout current.m_iMinute;,cout current.m_iSec;,cout current.m_iHour:, current.m_iMinute :, current.m_iSec m_iHour;,cinm_iMinute;,cinm_iSec;,void Time:display( ),coutm_iHour: m_iMinute:m_iSecendl;,int main(),Time cur;,cur.input();,cur.display();,Time pas;,pas.input();,pas.display();,return 0;,注意,数据成员设为,private,,实现了信息隐蔽,类体定义在头文件中,类的实现定义在源文件,主函数定义在单独的源文件,类和对象的简单应用举例,(cont.),DEMO 5_10,Thank you!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!