《类的定义与使用》PPT课件.ppt

上传人:sh****n 文档编号:13158826 上传时间:2020-06-05 格式:PPT 页数:28 大小:278.50KB
返回 下载 相关 举报
《类的定义与使用》PPT课件.ppt_第1页
第1页 / 共28页
《类的定义与使用》PPT课件.ppt_第2页
第2页 / 共28页
《类的定义与使用》PPT课件.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第一讲测量程序设计基础,辽宁工程技术大学测绘学院张恒璟2011.9,测量程序设计,本次课主要内容:C+的类定义类成员函数的实现实例化类对象及使用类的构造函数与析构函数运算符重载与this指针使用友元函数与友元类类继承与派生,第四节类的定义与使用,一、C+的类定义例子:自然界中的类型自然界中的一切事物可以看作为“对象”,例如某个具体的人、房子、骑车、轮船等等。此处的对象是“具体的”人或者其他,如:张飞是一个对象。人类:不能看做是对象,人类是一个抽象的概念,因此人类应该看成是一个“类”。对象与类的关系变得明确:张飞这个对象,是具有人类这个类特征的对象。或者说:张飞是人类的一个实例化对象,简称实例化。,第四节类的定义与使用,1、C+类定义的规则类名:默认前缀是“C”,类名第一个字母大写。类的定义不分配内存空间,也就是说,类没有生命,创建一个类的实例化对象是要分配内存空间的,即:对象是有生命的。定义一个人类类的方式如下:关键字:classclassCPeople成员变量;(属性)成员函数;(方法、行为);,第四节类的定义与使用,2、属性:类的数据成员变量;例如:姓名:stringstrName;年龄:unsignedintage;性别:intsex;此处以1表示男,0表示1身高:doubleheight;体重:doubleweight;,第四节类的定义与使用,3、行为、方法:类的成员函数;例如:行走:voidwalk();学习:voidstudy();工作:voidwork();睡觉:voidsleep();娱乐:voidentertainment();,第四节类的定义与使用,4、类成员的访问控制(具体:一个函数对一个类的成员的访问权限)public:公有的,没有访问限制private:私有的,类本身和friend可以访问protected:受保护的,类本身和派生类、friend可以访问,第四节类的定义与使用,注意:类的成员必须声明访问控制类型,否则默认是private,类定义的基本原则:尽量让内部数据与操作私有化提供简单易用的接口函数尽量降低类与类之间的耦合度,第四节类的定义与使用,二、类成员函数的实现举例:在win32consoleapplication应用程序中,创建类的H头文件和cpp应用程序文件:People.hPeople.cpp,第四节类的定义与使用,具体的过程演示!,预编译语句(头文件)#ifndef_PEOPLE_H_#define_PEOPLE_H_;#endif,防止因头文件的多重包含而导致类的多次定义,People.h头文件中一般存放:类的定义(变量与函数的声明)People.cpp源文件中一般存放:成员函数的定义(实现)#include/c+的输入输出头文件#include“People.h”/自定义类的头文件usingnamespacestd;/使用标准名称空间下面是成员函数的实现:voidCPeople:walk()/:是类的作用域,第四节类的定义与使用,三、实例化类对象及使用前面已经定义了“People”类,在其他应用程序中如何使用这个类?首先需要创建类的对象。类对象的创建又称为类的实例化。在前面实例的win32控制台应用程序中,增加main()主函数文件main.cpp:#include#include“People.h”usingnamespacestd;intmain();,第四节类的定义与使用,intmain()CPeoplem_p1;/类的实例化,称为一个对象,或类对象m_p1.walk();/类对象的使用方式(类对象操作符.)m_p1.sleep();return0;,第四节类的定义与使用,四、类的构造函数与析构函数前面已经定义了“CPeople”类,具有不能初始化的缺点,例如:m_p1.strName=“zhangfei”;编译器不能通过该编译(在.h文件中无法完成初始化),需要定义构造函数:(一)不带参数的构造函数CPeople();(二)带参数的构造函数CPeople(stringname,unsignedintAge,intSex,doubleHeight,doubleWeight);,第四节类的定义与使用,构造函数的特点:没有返回值!构造函数:可以重载(下面单独讲解)构造函数的形参列表:与类的成员变量不同。两种类型的构造函数实现方式如下:1、CPeople:CPeople()strName=“zhangfei”;age=20;sex=1;height=175;weight=65;,第四节类的定义与使用,2、CPeople:CPeople(stringname)strName=name;age=Age;sex=Sex;height=Height;weight=weight;在主函数main.cpp中就有两种创建类对象的方式CPeoplem_p1;CPeoplem_p2(“zhangfei”,40,1,180,100);,第四节类的定义与使用,一个有趣的问题:人的性别(sex)从出生到死亡都是不变的吗?如果这么认为,则sex可定义为常量:constintsex;/表示性别一生不变此时:两个构造函数中的sex=Sex与sex=1语句是错误的!Why?,第四节类的定义与使用,基本常识:常量不能作为赋值号的左操作符,C+解决此问题的办法:特殊的类初始化方法成员初始化列表法例如:1、不带参数的构造函数CPeople:CPeople():strName(“zhangfei”),age(40),sex(1),height(180),weight(100),第四节类的定义与使用,2、带参数的构造函数CPeople:CPeople(stringname):strName(name),age(Age),sex(Sex),height(Height),weight(Weight)注意()中的是构造函数的形参。,第四节类的定义与使用,析构函数CPeople();如果类中没有动态内存的分配,则此析构函数可以为空。,第四节类的定义与使用,五、运算符重载与this指针使用首先看一个函数重载的例子!其实前面的两个构造函数,即是重载的构造函数。(一)函数重载的含义C+具有多态性,函数重载就是多态性的一种表现形式。所谓函数重载,就是一个函数名有多个不同版本的函数体。这样的好处是:给用户程序提供一个稳定不变的接口,接口里面的内容根据用户程序提供的参数来确定。举例,第四节类的定义与使用,函数重载的例子:程序中经常需要使用string/int/otherType类型的数据交换,则可以定义三个交换变量值swap()重载函数:voidswap(string例如向量加法操作符函数:myVectoroperator+(myVectorV);,第四节类的定义与使用,this指针指向当前的实例对象,下面的程序演示!友元函数不是类的成员函数,不属于类的成员,是一个独立函数。关键词:friend,第四节类的定义与使用,观看Win32consoleapplication演示!,六友元类例如:A类定义为B类的友元类,格式:ClassBfriendA;访问控制:A类的任意成员函数均可以访问B类所有的成员。反过来不成立。,第四节类的定义与使用,七类继承与派生例如:人类定义为CPeople,动物类定义为CAnimal则人类继承了动物类的属性与行为,且人类有自己独特的属性与行为,比如人类有姓名,会制造和使用工具的行为等,而动物不具备。此时可以说,人类继承了动物类,动物类是基类(或父类),人类是动物类的派生类(或子类)。继承性的表示方式:ClassCPeople:publicCAnimalCPeople类的属性与行为的定义;这种继承方式称为公有继承。,第四节类的定义与使用,私有继承与保护继承公有继承:基类的public、protected成员作为派生类的成员,它们保持原有的状态。私有继承:基类的public、protected成员作为派生类的私有成员。保护继承:积累的所有public、protected成员都称为派生类的保护成员,并且只能被它的派生类成员函数和友元访问。三种继承的共同点:都不能访问基类的private私有成员。,第四节类的定义与使用,多继承有两个或两个以上的基类的继承关系称为多继承。,第四节类的定义与使用,技术人才类,管理人才类,技术和管理人才类,(基类),(派生类),谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!