欢迎来到天天文库
浏览记录
ID:39658960
大小:293.84 KB
页数:73页
时间:2019-07-08
《《类与对象》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章类与对象6.1类的定义类构成了实现C++面向对象程序设计的基础,在C++语言面向对象程序设计中占据着核心地位。它把数据和作用在这些数据上的操作组合在一起,是封装的基本单元。对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类是对一种概念的描述,或者说是对某一类具体事物的抽象。C语言中对“点”的描述:structPoint{doublex;doubley;};上述描述说明了点由两个坐标组成这样的概念。不过,它没有说明所描述概念的操作特性。6.1.1类的含义与表述C++丰富了C语言的结构并称之为类,使其能够描述出完整的概念。例如:structPoint{doublex;doub
2、ley;voiddisplay(){cout<3、classstack{private:chardata[100];char*top;public:voidpush(charc){//……}charpop(){//……}};可以省略掉使用说明:类的三个访问控制符可以任意顺序出现任意次。不能在类声明中给数据成员赋初值。(C++规定只有在类对象定义之后才能给数据成员赋初值)protected用于继承(详见第9章)数据成员不能用auto、register、extern修饰。类的作用域类的作用域指在类的声明中的一对花括号所形成的作用域。在类的作用域内部或外部访问同一个名字(变量或函数)的效果是不同的。6.2类对象从语法上讲,类定义使我们得到了一4、种新的数据类型。它们比C++的内置类型更复杂,但有着一般类型的效果,如可以定义Point类型的对象(变量)、指针变量和数组等。6.2.1对象定义一个自定义的类类型与内置类型在语法上并没有什么差异。例如:Dated1,d2,*pd,a[10];对象和指针之间的运算与简单变量相同,对象间可以直接赋值:pd=&d1;d2=d1;对象赋值语句当一个对象赋值给另一个对象时,所有的数据成员都会逐位复制。如:Aa1,a2;a1.x=a2.x;a1.y=a2.y;说明:两个对象类型必须相同;两个对象间仅数据相同,而两个对象仍是分离的;当类中存在指针时,可能产生错误。6.2.2成员访问1.在类的内部在类的5、内部(主要是类的方法中)访问类的成员时只要直接使用成员名即可,无论属性还是方法都如此。2.在类的外部一般形式:对象名.数据成员名对象名.成员函数名(实参表)若定义的是指向对象的指针,则访问此对象的成员时,要使用“->”操作符。#includeusingnamespacestd;classDate{public:intyear,month,day;voidprint(){cout<6、0!=0)7、8、year%400==0;}intmain(){Dated;cin>>d.year>>d.month>>d.day;//输入数据d.print();//显示日期cout<<"thedate'syear"//判断是否闰年<<(d.isLeapYear()?"is":"isnot")<<"aleapyear.";}例:下面的程序从键盘输入一个日期并判断其年份是否为闰年。6.2.3对象存储在生成对象时,每个对象都占用包括所有数据成员在内的存储空间(静态属性除外,参见8.1),即每个对象保存着一份所有数据成员的“拷贝”,但所有对象的成员函数只有一份公用的拷贝,单独存储。因此,一个对9、象占用的存储空间是所有数据成员占用的存储空间之和,不包括成员函数。cout<
3、classstack{private:chardata[100];char*top;public:voidpush(charc){//……}charpop(){//……}};可以省略掉使用说明:类的三个访问控制符可以任意顺序出现任意次。不能在类声明中给数据成员赋初值。(C++规定只有在类对象定义之后才能给数据成员赋初值)protected用于继承(详见第9章)数据成员不能用auto、register、extern修饰。类的作用域类的作用域指在类的声明中的一对花括号所形成的作用域。在类的作用域内部或外部访问同一个名字(变量或函数)的效果是不同的。6.2类对象从语法上讲,类定义使我们得到了一
4、种新的数据类型。它们比C++的内置类型更复杂,但有着一般类型的效果,如可以定义Point类型的对象(变量)、指针变量和数组等。6.2.1对象定义一个自定义的类类型与内置类型在语法上并没有什么差异。例如:Dated1,d2,*pd,a[10];对象和指针之间的运算与简单变量相同,对象间可以直接赋值:pd=&d1;d2=d1;对象赋值语句当一个对象赋值给另一个对象时,所有的数据成员都会逐位复制。如:Aa1,a2;a1.x=a2.x;a1.y=a2.y;说明:两个对象类型必须相同;两个对象间仅数据相同,而两个对象仍是分离的;当类中存在指针时,可能产生错误。6.2.2成员访问1.在类的内部在类的
5、内部(主要是类的方法中)访问类的成员时只要直接使用成员名即可,无论属性还是方法都如此。2.在类的外部一般形式:对象名.数据成员名对象名.成员函数名(实参表)若定义的是指向对象的指针,则访问此对象的成员时,要使用“->”操作符。#includeusingnamespacestd;classDate{public:intyear,month,day;voidprint(){cout<6、0!=0)7、8、year%400==0;}intmain(){Dated;cin>>d.year>>d.month>>d.day;//输入数据d.print();//显示日期cout<<"thedate'syear"//判断是否闰年<<(d.isLeapYear()?"is":"isnot")<<"aleapyear.";}例:下面的程序从键盘输入一个日期并判断其年份是否为闰年。6.2.3对象存储在生成对象时,每个对象都占用包括所有数据成员在内的存储空间(静态属性除外,参见8.1),即每个对象保存着一份所有数据成员的“拷贝”,但所有对象的成员函数只有一份公用的拷贝,单独存储。因此,一个对9、象占用的存储空间是所有数据成员占用的存储空间之和,不包括成员函数。cout<
6、0!=0)
7、
8、year%400==0;}intmain(){Dated;cin>>d.year>>d.month>>d.day;//输入数据d.print();//显示日期cout<<"thedate'syear"//判断是否闰年<<(d.isLeapYear()?"is":"isnot")<<"aleapyear.";}例:下面的程序从键盘输入一个日期并判断其年份是否为闰年。6.2.3对象存储在生成对象时,每个对象都占用包括所有数据成员在内的存储空间(静态属性除外,参见8.1),即每个对象保存着一份所有数据成员的“拷贝”,但所有对象的成员函数只有一份公用的拷贝,单独存储。因此,一个对
9、象占用的存储空间是所有数据成员占用的存储空间之和,不包括成员函数。cout<
此文档下载收益归作者所有