类的定义与使用.ppt

上传人:小飞机 文档编号:6372965 上传时间:2023-10-21 格式:PPT 页数:28 大小:204.50KB
返回 下载 相关 举报
类的定义与使用.ppt_第1页
第1页 / 共28页
类的定义与使用.ppt_第2页
第2页 / 共28页
类的定义与使用.ppt_第3页
第3页 / 共28页
类的定义与使用.ppt_第4页
第4页 / 共28页
类的定义与使用.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《类的定义与使用.ppt》由会员分享,可在线阅读,更多相关《类的定义与使用.ppt(28页珍藏版)》请在三一办公上搜索。

1、第一讲 测量程序设计基础,辽宁工程技术大学测绘学院 张恒璟 2011.9,测量程序设计,本次课主要内容:C+的类定义 类成员函数的实现 实例化类对象及使用 类的构造函数与析构函数 运算符重载与this指针使用 友元函数与友元类 类继承与派生,第四节 类的定义与使用,一、C+的类定义例子:自然界中的类型 自然界中的一切事物可以看作为“对象”,例如某个具体的人、房子、骑车、轮船等等。此处的对象是“具体的”人或者其他,如:张飞是一个对象。人类:不能看做是对象,人类是一个抽象的概念,因此人类应该看成是一个“类”。对象与类的关系变得明确:张飞这个对象,是具有人类这个类特征的对象。或者说:张飞是人类的一个

2、实例化对象,简称实例化。,第四节 类的定义与使用,1、C+类定义的规则 类名:默认前缀是“C”,类名第一个字母大写。类的定义不分配内存空间,也就是说,类没有生命,创建一个类的实例化对象是要分配内存空间的,即:对象是有生命的。定义一个人类类的方式如下:关键字:classclass CPeople 成员变量;(属性)成员函数;(方法、行为);,第四节 类的定义与使用,2、属性:类的数据成员变量;例如:姓名:string strName;年龄:unsigned int age;性别:int sex;此处以1表示男,0表示1身高:double height;体重:double weight;,第四节

3、类的定义与使用,3、行为、方法:类的成员函数;例如:行走:void walk();学习:void study();工作:void work();睡觉:void sleep();娱乐:void entertainment();,第四节 类的定义与使用,4、类成员的访问控制(具体:一个函数对一个类的成员的访问权限)public:公有的,没有访问限制private:私有的,类本身和friend可以访问protected:受保护的,类本身和派生类、friend可以访问,第四节 类的定义与使用,注意:类的成员必须声明访问控制类型,否则默认是private,类定义的基本原则:尽量让内部数据与操作私有化 提

4、供简单易用的接口函数 尽量降低类与类之间的耦合度,第四节 类的定义与使用,二、类成员函数的实现 举例:在win32 console application应用程序中,创建类的H头文件和cpp应用程序文件:People.h People.cpp,第四节 类的定义与使用,具体的过程演示!,预编译语句(头文件)#ifndef _PEOPLE_H_#define _PEOPLE_H_;#endif,防止因头文件的多重包含而导致类的多次定义,People.h头文件中一般存放:类的定义(变量与函数的声明)People.cpp源文件中一般存放:成员函数的定义(实现)#include/c+的输入输出头文件#i

5、nclude“People.h”/自定义类的头文件using namespace std;/使用标准名称空间下面是成员函数的实现:void CPeople:walk()/:是类的作用域,第四节 类的定义与使用,三、实例化类对象及使用 前面已经定义了“People”类,在其他应用程序中如何使用这个类?首先需要创建类的对象。类对象的创建又称为类的实例化。在前面实例的win32控制台应用程序中,增加main()主函数文件main.cpp:#include#include“People.h”using namespace std;int main();,第四节 类的定义与使用,int main()CP

6、eople m_p1;/类的实例化,称为一个对象,或类对象m_p1.walk();/类对象的使用方式(类对象操作符.)m_p1.sleep();return 0;,第四节 类的定义与使用,四、类的构造函数与析构函数 前面已经定义了“CPeople”类,具有不能初始化的缺点,例如:m_p1.strName=“zhang fei”;编译器不能通过该编译(在.h文件中无法完成初始化),需要定义构造函数:(一)不带参数的构造函数CPeople();(二)带参数的构造函数CPeople(string name,unsigned int Age,int Sex,double Height,double W

7、eight);,第四节 类的定义与使用,构造函数的特点:没有返回值!构造函数:可以重载(下面单独讲解)构造函数的形参列表:与类的成员变量不同。两种类型的构造函数实现方式如下:1、CPeople:CPeople()strName=“zhang fei”;age=20;sex=1;height=175;weight=65;,第四节 类的定义与使用,2、CPeople:CPeople(string name)strName=name;age=Age;sex=Sex;height=Height;weight=weight;在主函数main.cpp中就有两种创建类对象的方式CPeople m_p1;CP

8、eople m_p2(“zhang fei”,40,1,180,100);,第四节 类的定义与使用,一个有趣的问题:人的性别(sex)从出生到死亡都是不变的吗?如果这么认为,则sex可定义为常量:const int sex;/表示性别一生不变此时:两个构造函数中的 sex=Sex 与 sex=1语句是错误的!Why?,第四节 类的定义与使用,基本常识:常量不能作为赋值号的左操作符,C+解决此问题的办法:特殊的类初始化方法成员初始化列表法例如:1、不带参数的构造函数CPeople:CPeople():strName(“zhangfei”),age(40),sex(1),height(180),w

9、eight(100),第四节 类的定义与使用,2、带参数的构造函数CPeople:CPeople(string name):strName(name),age(Age),sex(Sex),height(Height),weight(Weight)注意()中的是构造函数的形参。,第四节 类的定义与使用,析构函数CPeople();如果类中没有动态内存的分配,则此析构函数可以为空。,第四节 类的定义与使用,五、运算符重载与this指针使用首先看一个函数重载的例子!其实前面的两个构造函数,即是重载的构造函数。(一)函数重载的含义 C+具有多态性,函数重载就是多态性的一种表现形式。所谓函数重载,就是一

10、个函数名有多个不同版本的函数体。这样的好处是:给用户程序提供一个稳定不变的接口,接口里面的内容根据用户程序提供的参数来确定。举 例,第四节 类的定义与使用,函数重载的例子:程序中经常需要使用string/int/otherType类型的数据交换,则可以定义三个交换变量值swap()重载函数:void swap(string&a,string&b)/使用string的swap函数重载void swap(int&a,int&b)/使用int的swap函数重载void swap(otherType&a,otherType&b)/使用otherType的swap函数重载下面在main()函数中调用这三

11、个重载函数!,第四节 类的定义与使用,观看Win32 console application演示!,(二)运算符重载 常用的运算符:+-*/运算符也是操作函数,因此运算符重载实质也是函数重载。定义格式为:返回值类型 operator运算符(右操作数);例如向量加法操作符函数:myVector operator+(myVector V);,第四节 类的定义与使用,this指针 指向当前的实例对象,下面的程序演示!友元函数 不是类的成员函数,不属于类的成员,是一个独立函数。关键词:friend,第四节 类的定义与使用,观看Win32 console application演示!,六 友元类 例如:

12、A类定义为B类的友元类,格式:Class Bfriend A;访问控制:A类的任意成员函数均可以访问B类所有的成员。反过来不成立。,第四节 类的定义与使用,七 类继承与派生例如:人类定义为CPeople,动物类定义为CAnimal则人类继承了动物类的属性与行为,且人类有自己独特的属性与行为,比如人类有姓名,会制造和使用工具的行为等,而动物不具备。此时可以说,人类继承了动物类,动物类是基类(或父类),人类是动物类的派生类(或子类)。继承性的表示方式:Class CPeople:public CAnimal CPeople类的属性与行为的定义;这种继承方式称为公有继承。,第四节 类的定义与使用,私有继承与保护继承公有继承:基类的public、protected成员作为派生类的成员,它们保持原有的状态。私有继承:基类的public、protected成员作为派生类的私有成员。保护继承:积累的所有public、protected成员都称为派生类的保护成员,并且只能被它的派生类成员函数和友元访问。三种继承的共同点:都不能访问基类的private私有成员。,第四节 类的定义与使用,多继承有两个或两个以上的基类的继承关系称为多继承。,第四节 类的定义与使用,技术人才类,管理人才类,技术和管理人才类,(基类),(派生类),谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号