




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章类和对象(一)6.1类的定义格式和对象的定义方法6.2对象的初始化6.3数据成员的类型和成员函数的特性6.4静态成员6.5常成员6.6友元函数和友元类6.7函数的存储类6.1
类的定义格式和对象的定义方法6.1.1
类的定义格式//说明部分
class<类名>{public:<成员函数和数据成员的说明或实现>private:<数据成员和成员函数的说明或实现>};//实现部分
<函数类型><类名>::<成员函数名>(<参数表>)
{<函数体>}定义类的一般格式:
关于类定义的若干说明如下。①定义类的关键字通常用class,也可以用struct等。②类的定义由两大部分构成:说明部分和实现部分。③类的成员分为数据成员和成员函数两种。④类的成员具有访问权。类成员的访问权限有如下3种。public(公有的):公有成员不仅在类体内是可见的,而且在类体外也是可见的。
private(私有的):私有成员仅在类体内是可见的,在类体外是被隐藏的。
protected(保护的):保护成员对于定义它的类来讲,相当于私有成员;对于该类的派生类来讲,相当于公有成员。⑤成员函数可以定义在类体内,也可以定义在类体外。(1)先定义类类型,再定义对象这种分开定义对象的格式如下:
<类名><对象名表>;6.1.2
对象的定义方法
(2)定义类类型同时定义对象这种同时定义对象的格式如下:
class<类名>{<类体成员>}<对象名表>;(3)使用无名类直接定义对象用无名类直接定义对象的格式如下:
class{<类体成员说明与定义>}<对象名表>;(1)一般对象的成员表示用运算符。
<对象名>.<数据成员名><对象名>.<成员函数名>(<参数表>)6.1.3
对象成员的表示(2)指向对象指针的成员表示用运算符-><对象指针名>-><数据成员名><对象指针名>-><成员函数名>(<参数表>)(4)对象数组元素的成员表示同一般对象
<数组名>[<下标>].<成员名>
见书中例6.1。6.2
对象的初始化
构造函数的主要功能就是用来初始化对象。6.2.1
构造函数的功能、种类和特征1.构造函数的功能
构造函数通常有如下3种。(1)默认构造函数这种构造函数的特点是不带参数。默认构造函数用户可以定义。如果在一个类体中,用户没有定义任何构造函数时,系统会自动创建一个默认的构造函数。2.构造函数的种类(2)带参数的构造函数构造函数可以带有一个或者多个参数。(3)拷贝构造函数拷贝构造函数是用来使用已知对象给所创建对象进行初始化时所用的构造函数。
拷贝构造函数的格式如下:
<构造函数名>(<类名>&<对象引用名>){<函数体>}
如果一个类中,用户没有定义拷贝构造函数时,系统自动创建一个默认的拷贝构造函数。
构造函数还具有与一般成员函数不同的特点。①构造函数的名字同类名。②说明或定义构造函数时不必指出类型,也无任何返回值。③构造函数是系统在创建对象时自动调用的。3.构造函数的特点
析构函数的功能正好与构造函数相反,它是用来释放所创建的对象的。一个对象在它的寿命结束时,系统将会自动调用析构函数将它释放掉。6.2.2
析构函数的功能和特点
析构函数与一般成员函数不同的特点。①析构函数名同类名,为与构造函数区别在析构函数名前加“~”符号。②析构函数定义时不必给出类型,也无返回值,并且无参数。③析构函数是由系统自动调用。
如果一个类体内,用户没有定义析构函数时,系统会自动创建一个默认的析构函数。析构函数由于没有参数,它不能被重载。见书中例6.2,例6.3。
6.3
数据成员的类型和成员函数的特性6.3.1
类中数据成员类型的规定
类中数据成员的数据类型是没有限制的。数据成员的存储类只有静态类。加存储类说明符static的为静态数据成员。1.成员函数可以重载6.3.2
成员函数的特性
成员函数可以重载,重载时应遵循参数可以区别的规则。见书中例6.4。C++语言规定,成员函数如果被定义在类体内,则为内联函数。如果要使定义在类体外的函数也为内联函数,需在定义时在函数头前加上关键字inline。见书中例6.5。2.成员函数可以被说明为内联函数成员函数的参数可以设置为默认值。见书中例6.6。3.成员函数的参数可以设置默认值6.4静态成员6.4.1
静态数据成员
在类体内使用关键字static说明的成员称为静态成员。静态成员包括静态数据成员和静态成员函数两种。静态成员的特点是它不是属于某对象的,而是属于整个类的,即所有对象的。
对静态数据成员初始化的方法是在类体外使用如下格式进行初始化:
<数据类型><类名>::<数据成员名>=<初值>;
由于静态数据成员不是属于某个对象的,可以通过类名加作用域运算符进行引用。具体格式如下:
<类名>::<静态数据成员名>;1.静态数据成员的说明方法和初始化①静态数据成员不是属于某个对象,而是属于整个类的。②静态数据成员不随对象的创建而分配内存空间,它也不随对象被释放而撤销。只有在程序结束时才被系统释放。③静态数据成员只能在类体外被初始化见书中例6.7。2.静态数据成员的特点
说明静态成员函数格式如下:
static<类型><成员函数名>(<参数表>); 引用静态成员函数有如下两种方式:
<类名>::<静态成员函数名>(<参数表>)或者
<对象名>.<静态成员函数名>(<参数表>)
在静态成员函数中可以直接引用其静态成员,而引用非静态成员时需用对象名引用。见书中例6.8。6.4.2
静态成员函数6.5
常成员
常数据成员格式如下:
const<类型><常数据成员名>常数据成员初始化是通过采用构造函数的成员初始列表来实现的。构造函数的成员初始化列表的格式如下:
<构造函数名>(<参数表>):<成员初始化列表>{<函数体>}
见书中例6.9。6.5.1
常数据成员
常成员函数格式如下:
<类型><成员函数名>(<参数表>)const{<函数体>}
常成员函数可以引用const数据成员,也可以引用非const的数据成员。见书中例6.10。6.5.2
常成员函数6.6友元函数和友元类
友元函数是说明在类体内的一般函数,它不是这个类中的成员函数,但是它访问该类所有成员。友元函数说明格式如下:
friend<类型><函数名>(<参数表>)6.6.1
友元函数
使用友元函数时应注意如下几点。①友元函数前边加friend关键字,说明在类体内。如被定义在类体外,不加类名限定。②友元函数可以访问类中的私有成员和其他成员。③友元函数的作用在于可以提高程序的运行效率。。④友元函数在调用上同一般函数。见书中例6.11。
将一个类作为另一个类的友元,则该类称为友元类。友元类中的所有成员函数都是这个类的友元函数。说明友元类的形式如下:
friendclass<类名>;6.6.2
友元类
使用友元类应注意下述事项。①友元关系是不可逆的。B类是A类的友元类,不等于A类是B类的友元类。②友元关系是不可传递的。B类是A类的友元类,C类是B类的友元类,C类不一定就是A类的友元类。见书中例6.12。6.7类型转换C++语言编译系统提供内部数据类型的自动隐含转换规则如下。①在执行算术运算时,低类型自动转换为高类型。②在赋值表达式中,赋值运算符右边表达式的类型自动转换为左边变量的类型。6.7.1
类型的隐含转换③在函数调用时,将调用函数的实参初始化形参,系统将实参转换为形参类型后,再进行传值。这里的隐含转换通常是低类型转换为高类型。④在函数有返回值时,系统自动将返回的表达式的类型转换为该函数的类型后,再将表达式的值返回给调用函数。在程序中,出现上述转换时,如果数据精度受损失,系统会报错。6.7.2
一般数据类型转换为类类型
使用一个参数的构造函数可将某种数据类型转换为该构造函数所属类的类型。见书中例6.13。6.7.3
类类型转换为一般数据类型
通过在类中定义类型转换函数可以实现由某种类类型转换为某种指定的数据类型的操作。类型转换函数定义格式如下:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来生物制造行业的市场前景预测
- 思政课教材建设与内容更新策略及实施路径
- 生物制造行业面临的挑战与应对策略
- 瓶装水的品牌竞争格局分析
- 废弃矿山生态修复项目风险评估与管理方案
- -公司2025年-季度能源电力系统-安全生产治本攻坚三年行动电力-建设重点任务落实情况
- 农村鱼池收购合同范例
- 2025至2030年中国按摩发梳数据监测研究报告
- 公寓铺子转让合同范例
- 买卖电动车合同范例
- 典当行行业报告
- 经典成语故事叶公好龙
- 绿色金融案例分析实证分析报告
- 《幼儿园课程》第1章:幼儿园课程概述
- 实验室扩项方案
- 起重吊装施工重难点及管控措施
- (理实)《Java程序设计》图形用户界面(GUI)设计 课件
- 建设工程质量安全监督工作流程图
- 眼镜学智慧树知到课后章节答案2023年下温州医科大学
- 《封神演义》与道教神仙体系
- 220kV升压站调试施工方案
评论
0/150
提交评论