mfc课件

上传人:jiups****uk12 文档编号:57176269 上传时间:2018-10-19 格式:PPT 页数:111 大小:809.50KB
返回 下载 相关 举报
mfc课件_第1页
第1页 / 共111页
mfc课件_第2页
第2页 / 共111页
mfc课件_第3页
第3页 / 共111页
mfc课件_第4页
第4页 / 共111页
mfc课件_第5页
第5页 / 共111页
点击查看更多>>
资源描述

《mfc课件》由会员分享,可在线阅读,更多相关《mfc课件(111页珍藏版)》请在金锄头文库上搜索。

1、,目录,3.1 类的声明和对象的定义 3.2 类的构造函数 3.3 类的析构函数 3.4 构造函数和析构函数的调用顺序 3.5 对象数组 3.6 对象指针 3.7 静态成员 3.8 对象成员 3.9 友元 3.10 常类型,第3章 类和对象,目的要求,3.1 类的声明和对象的定义,3.1.1 类的声明 3.1.2 对象的定义和使用 3.1.3 类和结构体类型的比较 3.1.4 类的封装性和信息隐藏,类类型的声明,一般形式如下: class 类名 private:私有的数据成员和成员函数;public:公用的数据成员和成员函数;private和public称为成员访问限定符(member acc

2、ess specifier)。 如果在类的定义中既不指定private,也不指定public,则系统就默认为是私有的。,3.1.1 类的声明,实例:,class Student /声明类类型 private: /声明以下部分为私有的int num;char name20; char sex; public: /声明以下部分为公用的void display( ) coutnum:numendl;coutname:nameendl;coutsex:sexendl; ;,说明: 1、除了private和public之外,还有一种成员访问限定符protected(受保护的),用protected声明的

3、成员称为受保护的成员,它不能被类外访问,但可以被派生类的成员函数访问。 2、在声明类类型时,如没写关键字则默认为private。 3、在一个类体中,关键字private和public可以分别出现多次。每个部分的有效范围到出现另一个访问限定符或类体结束时为止。建议: 使每一种成员访问限定符在类定义体中只出现一次。,类的成员函数(简称类函数)是函数的一种,它与一般函数的区别只是: 它是属于一个类的成员,出现在类体中。成员函数可以访问本类中任何成员,可以引用在本作用域中有效的数据。具体内容:成员函数的性质成员函数定义的位置成员函数的存储方式,类的成员函数,成员函数的性质成员函数定义的位置,注意:在类

4、的内部对成员函数作声明,而在类体外定义成员函数,这是程序设计的一种良好习惯。如果一个函数,其函数体只有23行,一般可在声明类时在类体中定义。多于3行的函数,一般在类体内声明,在类外定义。如果想将类体外定义的成员函数指定为内置函数,要用inline 显式声明,同时必须将类定义和成员函数的定义都放在同一个头文件中,否则编译时无法进行置换。内置函数适用于成员函数规模很小而调用频率较高情况。,成员函数的存储方式,用类去定义对象时,系统会为每一个对象分配存储空间。一个类包括了数据和函数,C+编译系统只用一段空间来存放公用函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。如图所示。,3.1.2

5、 对象的定义和使用,对象的定义类似结构体变量的定义方法:1. 先声明类类型,然后再定义对象(1) class 类名 对象名(2) 类名 对象名 2. 在声明类类型的同时定义对象3. 不出现类名,直接定义对象,class Student public:void display( ) cout“num:”numendl;cout“name:”nameendl;cout“sex:”sex成员名 3.通过对象的引用变量访问对象中的成员。 引用变量名.成员名,例:,#include using namespace std; class Time public:void set_time( ); void

6、 show_time( ); private: int hour;int minute;int sec; ; int main( ) Time t1,*p= /(2)对象的指针访问,Time t2; Time ,3.1.3 类和结构体类型的比较,结构体中也可以包含成员函数,此时的结构体实际上也就是类。,类class和结构体struct的比较用struct声明的类,系统将其默认为public。也可分别显式声明指定私有成员private和公用成员public。而用class定义的类,系统将其成员默认为private。如果希望成员是公用的,使用struct比较方便,如果希望部分成员是私有的,宜用cl

7、ass。尽量使用class来建立类,写出完全体现C+风格的程序。,3.1.4 类的封装性和信息隐藏,公用接口与私有实现的分离,C+通过类来实现封装性。公用成员函数是类的公用接口(public interface) ,用户主要是通过调用公用的成员函数来实现类提供的功能。在类外不能直接访问私有数据成员,但可以通过调用公用成员函数来引用或修改私有数据成员。通过成员函数对数据成员进行操作称为类的实现。可以看到: 类中被操作的数据是私有的,实现的细节对用户是隐蔽的,这种实现称为私有实现(private implementation)。这种“类的公用接口与私有实现的分离”形成了信息隐蔽。,软件工程的一个最

8、基本的原则就是将接口与实现分离,信息隐蔽的好处在于: (1) 如果想修改或扩充类的功能,只需修改本类中有关的数据成员和与它有关的成员函数。 (2) 如果在编译时发现类中的数据读写有错,只需检查本类中访问这些数据的少数成员函数。,类声明和成员函数定义的分离,在OOP中,一般做法: 将类的声明(其中包含成员函数的声明)放在指定的头文件中; 对类成员函数的定义一般另外放在一个文件中。如果想用该类,只要把有关的头文件包含进来,就可以用该类来定义对象。,例如:可以分别写三个文件: /student.h /类的声明 class Student public:void display( ); private

9、:int num; char name20; char sex; ;,/student.cpp /在此文件中进行函数的定义 #include #include “student.h”/不要漏写否则编译不过 void Student:display( ) /类外定义display类函数 cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexhour;cinminute;cinsec; void Time:show_time( ) couthour“:”minute“:”secendl; int main( ) Time t1; /建立对象t1,

10、同时调用构造函数t1.Time( ) t1.set_time( ); t1.show_time( ); Time t2; /建立对象t2,同时调用构造函数t2.Time( ) t2.show_time( ); return 0; ,说明:(1) 在类对象进入其作用域时调用构造函数。 (2) 构造函数没有返回值,不需要函数声明。 (3) 构造函数不需用户调用,也不能被用户调用。 (4) 如果用户自己没有定义构造函数,则C+系统会自动生成一个构造函数,只是这个构造函数的函数体是空的。,3.2.2 参数化的构造函数,采用带参数的构造函数,在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数,

11、以实现不同的初始化。 构造函数首部的一般格式为 构造函数名(类型 1 形参1,类型2 形参2,) 实参是在定义对象时给出的。 定义对象的一般格式为 类名 对象名(实参1,实参2,);,例3.2 求两个长方柱的体积。#include using namespace std; class Box public:Box(int,int,int); /声明带参数的构造函数int volume( ); private:int height;int width;int length; ; BoxBox(int h,int w,int len) /在类外定义带参数的构造函数 height=h;width=w;l ength=len; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号