第5章类与对象ppt课件.ppt
《第5章类与对象ppt课件.ppt》由会员分享,可在线阅读,更多相关《第5章类与对象ppt课件.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 类与对象类与对象第5章类与对象ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第第5章章 类与对象类与对象内容提要内容提要内容提要内容提要v本章作为面向对象程序编程基础,将介绍类的基本概念、类的定义方法。重点介绍类的成员函数、数据成员以及类的访问限制。v介绍构造函数和析构函数的定义和使用以及如何重载构造函数。v介绍this指针以及const修饰符第第5章章 类与对象类与对象5.1 5.1 类的定义类的定义类的定义类的定义v类类源源于于现现实实
2、生生活活中中,是是所所遇遇见见的的实实实实在在在在的的对对象象,对对每每个个对对象象的的认认识识就就需需要要抽抽象象的的概概念念,分分类类的的结结果果使使对对象象更更加具体和细化。加具体和细化。v例如:问什么是桑塔那?回答是一种小汽车;再问什么例如:问什么是桑塔那?回答是一种小汽车;再问什么是小汽车?一般回答是一种交通工具等等。在面向对象是小汽车?一般回答是一种交通工具等等。在面向对象的计算机世界里,一辆实实在在的桑塔纳小汽车称为类的计算机世界里,一辆实实在在的桑塔纳小汽车称为类桑塔纳的实例或对象。类桑塔纳是类小汽车的一个子类,桑塔纳的实例或对象。类桑塔纳是类小汽车的一个子类,而类小汽车是类交
3、通工具的一个子类,等等。在本章中,而类小汽车是类交通工具的一个子类,等等。在本章中,要引入全新的编程思想,就是类的概念。要引入全新的编程思想,就是类的概念。第第5章章 类与对象类与对象类类类类v类是是对对客客观观事事物物的的一一种种高高度度抽抽象象,是是具具有有一一组组相相同同属属性性和和操操作作的的集集合合,因因此此它它包包括括两两个部分的内容:数据成员和成员函数,其定义格式为:个部分的内容:数据成员和成员函数,其定义格式为:class class public:public:/数据成员或者成员函数数据成员或者成员函数private:private:/数据成员或者成员函数数据成员或者成员函数
4、protected:protected:/数据成员或者成员函数数据成员或者成员函数;v类的定义和结构的定义有些相似,但是类和结构有本质的区别:类的定义和结构的定义有些相似,但是类和结构有本质的区别:类定义中默认的情况下成员是private的,而结构定义中的默认成员是public的。在在C C语言中,结构中不允语言中,结构中不允许有成员函数,在许有成员函数,在C+C+语言中可以有成员函数。语言中可以有成员函数。v对象:程序中用来描述一个个的具体实体。第第5章章 类与对象类与对象几点说明几点说明几点说明几点说明v(1 1)大括号的部分是类的成员(数据成员和函数成员),它们分成三)大括号的部分是类的
5、成员(数据成员和函数成员),它们分成三部分,分别由部分,分别由privateprivate、publicpublic、proctectedproctected三个关键字后跟冒号来指三个关键字后跟冒号来指定。这三部分可以任何顺序出现,且在一个类的定义中,这三部分并非定。这三部分可以任何顺序出现,且在一个类的定义中,这三部分并非必须同时出现。必须同时出现。v(2 2)类中数据成员)类中数据成员不允许使用表达式进行初始化不允许使用表达式进行初始化;v(3 3)类中数据成员与成员函数)类中数据成员与成员函数可用可用constconst修饰修饰。v(4 4)经常习惯地将类定义的说明部分或者整个定义部分)
6、经常习惯地将类定义的说明部分或者整个定义部分(包含实现部分包含实现部分)放到一个头文件中。放到一个头文件中。见P144、P146第第5章章 类与对象类与对象使用使用C+C+语言的类语言的类案例名称:使用C+语言的类#include class person /建立类名称为建立类名称为personpublic:char*name;int height;/描述身高描述身高 int weight;/描述体重描述体重;void main()person Zhang_three;/建立建立Zhang_three实例对象实例对象Zhang_three.name=张三张三;/Chang_three的名字张三
7、的名字张三Zhang_three.height=175;/Chang_three的身高的身高175Zhang_three.weight=60;/Chang_three的体重的体重60cout 名字名字:Zhang_three.name n身高身高:Zhang_three.height n体重体重:Zhang_three.weight endl;第第5章章 类与对象类与对象使用结构来实现使用结构来实现使用结构来实现使用结构来实现vstruct Personstruct Personv v char name20;char name20;v int height;int height;/描述身高描
8、述身高v int weight;int weight;/描述体重描述体重v;vint main(int argc,char*argv)int main(int argc,char*argv)v v Person pr1=“Person pr1=“张三张三,175,60;,175,60;v cout pr1.name cout pr1.name v pr1.height pr1.height v pr2.weight endl;pr2.weight endl;v v 第第5章章 类与对象类与对象5.2 5.2 5.2 5.2 数据成员数据成员数据成员数据成员 v数数据据成成员员又又叫叫成成员员变
9、变量量或或者者属属性性。数数据据成成员员的的声声明明方方式式和和变变量量的的声明方式基本相同,格式为:声明方式基本相同,格式为:“;”;”,v在声明一个数据成员时,需要注意两点:在声明一个数据成员时,需要注意两点:(1 1)不能采用)不能采用autoauto、externextern和和registerregister修饰符进行修饰;修饰符进行修饰;(2 2)只只有有采采用用staticstatic修修饰饰符符声声明明的的静静态态数数据据成成员员才才可可以以被被显显式式初初始始化化,它它具具有有特特殊殊的的属属性性。若若试试图图在在类类体体中中直直接接初初始始化化非非静静态态数数据据成成员员,
10、会会导导致致编译错误。编译错误。第第5章章 类与对象类与对象成员函数成员函数成员函数成员函数 v成员函数又叫方法,方法就是函数,当函数被类成员函数又叫方法,方法就是函数,当函数被类封装的时候称之为方法。封装的时候称之为方法。v成员函数在类体中的声明方式和普通函数的声明成员函数在类体中的声明方式和普通函数的声明方式相同,成员函数可以在类体内被定义,也可方式相同,成员函数可以在类体内被定义,也可以在类体外被定义。在类体内被定义被认为是内以在类体外被定义。在类体内被定义被认为是内联函数。联函数。第第5章章 类与对象类与对象在类中定义成员函数在类中定义成员函数案例名称:在类中定义成员函数#includ
11、e class person /建立类名称为建立类名称为personpublic:char*name;int height;/描述身高描述身高 int weight;/描述体重描述体重void After_OneYear()height+=10;weight-=10;void main()person Zhang_three;/建立建立Zhang_three实例对象实例对象Zhang_three.name=“张三张三”;/Chang_three的名字张三的名字张三Zhang_three.height=175;/Chang_three的身高的身高175Zhang_three.weight=60;
12、/Chang_three的体重的体重60 Zhang_three.After_OneYear();/调用方法调用方法cout 名字名字:Zhang_three.name n身高身高:Zhang_three.height n体重体重:Zhang_three.weight”“-”,才能访问类对象的成员。,才能访问类对象的成员。v其中,其中,“.”“.”用于类对象或引用用于类对象或引用,“-”“-”用于指向类对象的指针用于指向类对象的指针,使用指针定义对象就需要使用使用指针定义对象就需要使用“-”“-”,第第5章章 类与对象类与对象类对象成员的访问类对象成员的访问案例名称:类对象成员的访问#incl
13、ude class Tdate private:int month;public:void setMonth(int d)month=d;int getMonth()return month;void main()Tdate b;b.setMonth(10);cout b.getMonth()endl;第第5章章 类与对象类与对象5.6 5.6 5.6 5.6 类的作用域和对象的生存期类的作用域和对象的生存期类的作用域和对象的生存期类的作用域和对象的生存期v 内即为类作用域内即为类作用域v在类作用域中声明的标识符只在该类中具有可见性在类作用域中声明的标识符只在该类中具有可见性v成员名限定:类中
14、一个成员名字可以使用类名和作用域成员名限定:类中一个成员名字可以使用类名和作用域运算符来显式指定运算符来显式指定class C class C void C:set(int val)void C:set(int val)public:public:C:value=val;C:value=val;void set(int val);void set(int val);return;return;private:private:int value;int value;第第5章章 类与对象类与对象 对对象象从从诞诞生生到到结结束束的的这这段段时时间间就就是是它它的的生生存存期期。对对象象的的生生存存
15、期期可可以以分分为为静态生存期和动态生存期两种。静态生存期和动态生存期两种。静态生存期如果对象生存期与程序生存期相同,我们称它具有静态生存期。在文件中声明的对象都是具有静态生存期的。如果要在函数内部的块作用域中声明具有静态生存期的对象,则要使用关键字static,动态生存期动态生存期对象诞生于声明点,结束于该标识符作用域结束处。动态生存期例子:vCircle gc;/Circle gc;/具有静态生存期,文件作用域具有静态生存期,文件作用域vvoid main()void main()v v gc.SetRadius(7);gc.SetRadius(7);v gc.PrintCircumfer
16、ence();gc.PrintCircumference();v Circle c;/Circle c;/声明具有动态作用域的对象声明具有动态作用域的对象c cv c.SetRadius(5);/c.SetRadius(5);/引用对象引用对象c cv c.PrintCircumference();c.PrintCircumference();v 第第5章章 类与对象类与对象5.8 5.8 5.8 5.8 对象的初始化对象的初始化对象的初始化对象的初始化v而当对象被定义时,由于对象的意义表达了现实世界的实体,而当对象被定义时,由于对象的意义表达了现实世界的实体,所以一旦定义对象,就必须有一个有
17、意义的初始值,在所以一旦定义对象,就必须有一个有意义的初始值,在C+C+中,中,在定义对象的同时,给该对象初始化的方法就是利用构造函数。在定义对象的同时,给该对象初始化的方法就是利用构造函数。下面分别从三个方面讲述初始化问题:下面分别从三个方面讲述初始化问题:v 1 1、类中数据成员的初始化:、类中数据成员的初始化:构造函数和析构函数构造函数和析构函数v 2 2、类中常量和引用的初始化:、类中常量和引用的初始化:初始化表初始化表v 3 3、类中对象成员的初始化:、类中对象成员的初始化:初始化表初始化表v 4 4、类的对象初始化:、类的对象初始化:拷贝构造函数拷贝构造函数第第5章章 类与对象类与
18、对象(1)(1)(1)(1)构造函数的概念构造函数的概念构造函数的概念构造函数的概念 v构构造造函函数数的的功功能能是是在在创创建建对对象象时时,使使用用给给定定的的值值来来将将对对象初始化象初始化。v其声明格式为其声明格式为“();”);”v需需要要注注意意的的是是,构造函数的名称必须与类名称相同。构构造造函函数数没没有有任任何何的的返返回回值值,所所以以不不能能有有返返回回类类型型,构构造造函数不能被声明为函数不能被声明为constconst类型。类型。第第5章章 类与对象类与对象构造函数的概念构造函数的概念案例名称:构造函数的概念#include class Tdate private:
19、int month;public:Tdate()cout 自动调用构造函数自动调用构造函数 endl;void main()Tdate*b=new Tdate();delete b;第第5章章 类与对象类与对象构造函数的特点如下:构造函数的特点如下:构造函数的特点如下:构造函数的特点如下:v1)1)构造函数是成员函数,函数体可写在类体内,也可定在类体外。构造函数是成员函数,函数体可写在类体内,也可定在类体外。2)2)构造函数是一个特殊的函数,构造函数是一个特殊的函数,v 该函数的名字与类名相同该函数的名字与类名相同;v 该函数不指定类型说明该函数不指定类型说明,它有隐含的返回值,该值由系它有隐
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 ppt 课件
限制150内