C++程序设计第9章 类和对象教学课件.ppt
《C++程序设计第9章 类和对象教学课件.ppt》由会员分享,可在线阅读,更多相关《C++程序设计第9章 类和对象教学课件.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计第9章 类和对象教学课件第九章 类和对象面向对象程序设计面向对象程序设计http:/ 本讲内容:3n 类和对象n 内联成员函数n 构造函数和析构函数n 类的组合n 友元函数和友元类n 其它n 再论constn this指针n 构造函数的初始化表n 静态成员http:/ 类和对象:4n 类n 对象n 类成员的访问方式http:/ 1-1 类5u 定义:u 特点:在类的内部包括两个部分:属性 和 行为 具有相似属性和操作的一组对象的集合 它对属于该类的所有对象提供统一的抽象描述提供更高的模块化(比c语言中的函数)http:/ 在 c+中类定义的一般格式:6class 类名 public
2、:公有数据和函数 private:私有数据和函数 protected:保护数据和函数;http:/ 实例:定义一个时钟类Clock7class Clock public:void SetTime(int h,int m,int s);void ShowTime();private:int hour;int minute;int second;http:/ 关于类成员的说明:8(1)数据成员(2)成员函数 定义方法同普通变量,只是它必须被定义在类内部 在类内部,成员数据只能被定义,但不能被初始化定义成员函数有两种方法:在类内部仅声明函数原型,在类外部定义函数体 此时必须使用二元作用域分辨符:在类
3、内部直接定义函数体。在这种情形下,函数默认为内联成员函数 http:/ 实例1-1:定义时钟类clock9class Clock public:void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;void Clock:SetTime(int h,int m,int s)hour=h;minute=m;second=s;void Clock:ShowTime()couthour:minute:secondendl;http:/ 实例1-2:定义时钟类clock10class Clock pu
4、blic:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;void ShowTime()couthour“:”minute“:”second;private:int hour,minute,second;注:此时成员函数默认为内联成员函数!http:/ 1-2 对象:11 对象是类的实例。即,对象是类的变量。p 定义对象的语法格式:类名 对象名;例:Clock myclock;http:/ 1-3 类成员的访问方式:12情形1:类内部成员的相互访问情形2:在类外部访问类的公有成员方法:直接使用成员名方法:使用对象名.成员名的形式访
5、问公有成员实 例http:/ 13实例:#include using namespace std;class Clock public:void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;void Clock:SetTime(int h,int m,int s)hour=h;minute=m;second=s;void Clock:ShowTime()couthour:minute:secondendl;http:/ 14void main()Clock myclock;myclock.S
6、etTime(19,30,18);myclock.ShowTime();运行结果:19:30:18http:/ 15声明内联成员函数有两种方法:(1)若成员函数的函数体定义在类内部(2)使用inline实 例实 例2.内联成员函数http:/ 16class Clock public:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;void ShowTime()couthour“:”minute“:”second;private:int hour;int minute;int second;实例:http:/ 17实例:class
7、 Clock public:void SetTime(int h,int m,int s);void ShowTime();private:int hour;int minute;int second;inline void Clock:SetTime(int h,int m,int s)hour=h;minute=m;second=s;http:/ 18n 构造函数n 析构函数n 综合实例n 拷贝构造函数3.构造函数和析构函数http:/ 193-1 构造函数1.概念:2.特性:是特殊的成员函数 用于在创建对象时为对象分配内存,并可以将其初始化到 特定的状态。构造函数的名称与类名称相同 构造
8、函数无返回值,所以不能设定返回类型,即使是void类型也不行 构造函数是在创建对象时由编译器自动调用 构造函数可以是内联函数、重载函数或带默认形参的函数http:/ 203.说明:程序员可以为类定义构造函数 若未定义,编译器会自动创建一个不带参数的构造函数。此默认构造函数的功能是为对象分配内存,但无法为成员数据赋初值4.实例:实 例1实 例2实 例3实 例45.讨论:构造函数的重载实 例5实 例6总 结http:/ 21实例 1:用户未定义构造函数时class Clock public:void SetTime(int h,int m,int s);void ShowTime();privat
9、e:int hour,minute,second;void main()Clock myclock;myclock.ShowTime();/隐含调用构造函数http:/ 22实例 2:由用户定义一个不带参数的构造函数class Clock public:Clock();void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;Clock:Clock()hour=0;minute=0;second=0;void main()Clock myclock;myclock.ShowTime();声明构造
10、函数定义构造函数隐含调用构造函数result:0:0:0http:/ 23实例3:由用户定义一个带参数的构造函数Clock:Clock(int h,int m,int s)hour=h;minute=m;second=s;class Clock public:Clock(int h,int m,int s);void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;声明构造函数定义构造函数void main()Clock myclock(12,0,0);myclock.ShowTime();隐含
11、调用构造函数result:12:0:0http:/ 24实例4:由用户定义带默认形参值的构造函数class Clock public:Clock(int h=12,int m=0,int s=0);void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;Clock:Clock(int h,int m,int s)hour=h;minute=m;second=s;声明构造函数定义构造函数http:/ 25void main()Clock myclock;myclock.ShowTime();Cl
12、ock yourclock(12);yourclock.ShowTime();Clock hisclock(13,15);hisclock.ShowTime();Clock herclock(10,52,2);herclock.ShowTime();result:12:0:0 12:0:0 13:15:0 10:52:2/定义对象,未指定实参/定义对象,给1个实参/定义对象,给2个实参/定义对象,给3个实参http:/ 26实例5:class Clock public:Clock();Clock(int h,int m,int s);void SetTime(int h,int m,int s
13、);void ShowTime();private:int hour,minute,second;http:/ 27Clock:Clock(int h,int m,int s)hour=h;minute=m;second=s;Clock:Clock()hour=0;minute=0;second=0;void main()Clock myclock;myclock.ShowTime();Clock hisclock(10,52,2);hisclock.ShowTime();http:/ 28实例6:class Clock public:Clock();Clock(int h=12,int m=
14、0,int s=0);void SetTime(int h,int m,int s);void ShowTime();private:int hour,minute,second;Clock:Clock()hour=0;minute=0;second=0;Clock:Clock(int h,int m,int s)hour=h;minute=m;second=s;void main()Clock myclock(10,52,2);myclock.ShowTime();Clock hisclock;hisclock.ShowTime();存在歧义!http:/ 29关于构造函数的重载的小结:与普
15、通函数类似,构造函数也可以被重载 在一个类的定义中,可以包括多个构造函数。这些构造函数有相同的函数名称,但有不同的参数列表。定义对象时,编译器会根据参数的个数、类型、顺序来决定调用哪一个重载构造函数。当重载不带参数的构造函数和带默认形参值的构造函数时,程序可能会产生二义性。因此,在实际编程中应避免这一情形。http:/ 303-2 拷贝构造函数1.概念:2.语法形式:是特殊的构造函数:其形参是自身对象的引用 拷贝构造函数在下述情形被调用:使用已有的对象初始化一个新的对象实 例1http:/ 31实例1:result:2,3 class Point public:Point(float xx=0
16、.0,float yy=0.0);Point(Point&p);float GetX();float GetY();private:float x,y;Point:Point(Point&p)x=p.x;y=p.y;void main()Point A(2,3);Point B(A);coutB.GetX(),B.GetY()endl;http:/ 323.说明:4.讨论:拷贝构造函数何时会被调用?拷贝构造函数有且只有一个形参,而且这个形参必须是自身对象的引用 若用户没有定义拷贝构造函数,在必要的时候,编译器会自动创建一个默认的拷贝构造函数Case 1Case 2Case 3http:/ 33
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计第9章 类和对象教学课件 C+ 程序设计 对象 教学 课件
限制150内