1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2013/3/11,#,C+,中的抽象数据类型,-,党标,2013.3.11,主要内容,1.C+,中类的基本概念,2.,从抽象层理解类,3.,从具体实现来理解类,类的基本概念,简单,的讲,类是一个包含函数的结构体。,类的定义格式如下:,Class,类名,Public,:,公有,数据成员,或公有,函数成员,的定义;,Protected,:,保护,数据成员,或保护,函数成员,的定义;,Private,:,私有,数据成员,或私有,函数成员,的定义;,;,类与,对象的关系(数据类型与变量的关系),主要内容,1.C+,
2、中类的基本概念,2.,从抽象层理解类,3.,从具体实现来理解类,从抽象层理解类,类,机制,是一种用来实现抽象数据类型的工具,类的特点:,从,内部看,自己操控自己的数据,从,外部看,隐藏内部具体实现。并提供与外界交互的接口。,主要内容,1.C+,中类的基本概念,2.,从抽象层理解类,3.,从具体实现来理解类,从具体实现来理解类,从,s,truct,说起,struct SDate,int year,month,day;,;,升级版的,struct,struct SDate,int,year,month,day;,void Print,();,;,如何理解带函数的,struct,Print,(),s
3、date1,sdate2,Int month,Int year,Int day,代码段,栈,低地址,高地址,struct SDate,int,year,month,day,;,void Print,();,;,void,SDate:Print,(),coutDate:year.month.dayendl;,int main,(),SDate sdate1,sdate2;,sdate1.Print,();,return 0;,带函数,struct,的等价表示,struct SDate,int,year,month,day,;,void Print,();,;,void,SDate:Print,(
4、),coutDate:year.month.dayendl;,int main,(),SDate sdate1,sdate2;,sdate1.Print,();,return 0;,struct SDate,int year,month,day;,;,void Print(SDate,*,self),coutyear.monthdayendl;,int main(),SDate sdate1,sdate2;,Print(,return 0;,Struct,&Class,结构,struct,SDate,int,year,month,day,;,void Print,();,;,void,SDat
5、e:Print,(),coutDate:year.month.dayendl;,int main,(),SDate sdate1,sdate2;,sdate1.Print,();,return 0;,类,class,Date,int year,month,day;,void Print();,;,void Date:Print(),coutDate:year.month.dayendl;,int main(),Date date1,date2;,date1.Print();,return 0;,函数成员,实例,1,实例,2,数据成员,2,数据成员,1,数据成员,3,代码段,栈,低地址,高地址,
6、类,class,Date,int year,month,day;,void Print();,;,void Date:Print(),coutDate:year.month.dayendl;,int main(),Date date1,date2;,date1.Print();,return 0;,类在内存中的表示,其它,用,class,和,struct,关键字定义类的唯一差别在于默认访问级别:,默认情况下,,struct,成员为,public,;而,class,的成员为,private,;,私有成员并不是不可访问的。,在编译时起作用,与程序的运行无关。,权限控制只针对类本身起作用。,虚表,若类中存在虚函数,类的前四个字节会被用来存放一个指向虚表的地址。,The end,Thank you,