




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Const和static,C+语言程序设计,1const通用含义,1.限定符声明变量只能被读2必须初始化3便于进行类型检查4分清数值常量和指针常量,2const成员,const修饰类的数据成员const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。const数据成员的初始化必须在类的构造函数的初始化表中进行。,3const和函数,另外const的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法:A,1)修饰参数的const调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,保护了原对象的属性或内容.注意1:参数const通常用于参数为指针或引用的情况,且只能修饰输入参数;若输入参数采用“值传递”方式,由于函数将自动产生临时变量用于复制该参数,该参数本就不需要保护,所以不用const修饰。注意2:对于非内部数据类型的输入参数,因该将“值传递”的方式改为“const引用传递”,目的是为了提高效率。对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。,2)修饰返回值,声明了返回值后,const按照修饰原则进行修饰,起到相应的保护作用。1.一般情况下,函数的返回值为某个对象时,如果将其声明为const时,多用于操作符的重载。2.如果给采用“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。3.函数返回值采用“引用传递”的场合不多,这种方式一般只出现在类的赙值函数中,目的是为了实现链式表达。,3)类成员函数中const的使用,任何不会修改数据成员的函数都因该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。,4使用const的一些建议,1要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;2要避免最一般的赋值操作错误,如将const变量赋值,具体可见思考题;3在参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上;4const在成员函数中的三种用法(参数、返回值、函数)要很好的使用;5不要轻易的将函数的返回值类型定为const;6除了重载操作符外一般不要将返回值类型定为对某个对象的const引用;,5Static通用含义,1隐藏全局变量和全局函数2持久化存储3默认初始化为0,6C+中的static数据成员,在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。(1)对于非static数据成员,每个类对象都有自己的拷贝。而static数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。,(2)静态数据成员存储在全局数据区。静态数据成员定义时才分配空间,所以不能在类声明中赋值。静态数据成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式为:数据类型类名:静态数据成员名=值(3)静态数据成员和普通数据成员一样遵从public,protected,private访问规则(4)因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;(5)类的静态数据成员有两种访问形式:类对象名.静态数据成员名类类型名:静态数据成员名,(6)静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了;(7)同全局变量相比,使用静态数据成员有两个优势:a.静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;b.可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;,7static成员函数,static成员函数,它为类的全部服务而不是为某一个类的具体对象服务。普通的成员函数一般都隐含了一个this指针,因为普通成员函数总是具体的属于某个类的具体对象的。通常情况下,this是缺省的。但是与普通函数相比,静态成员函数由于不是与任何的对象相联系,因此它不具有this指针。从这个意义上讲,它无法访问属于类对象的no-static数据成员,也无法访问no-static成员函数,它只能调用其余的静态成员函数。,(1)出现在类体外的函数定义不能指定关键字static;(2)static成员之间可以相互访问,包括static成员函数访问static数据成员和访问static成员函数;(3)非静态成员函数可以任意地访问静态成员函数和静态数据成员,但要通过对象名;(4)静态成员函数不能访问非静态成员函数和非静态数据成员,只能访问静态的;(5)由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;(6)调用静态成员函数,可以用成员访问操作符(.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江哈尔滨市木兰县公安局招聘警务辅助人员54人模拟试卷及1套参考答案详解
- 2025年三环集团校园大使招聘考前自测高频考点模拟试题及参考答案详解
- 2025年福建省福州市水路运输事业发展中心招聘1人模拟试卷及答案详解参考
- 2025贵州黔东南州天柱县拟聘用服务期满特岗教师李健为事业单位人员考前自测高频考点模拟试题及答案详解(名师系列)
- 2025年春季内蒙古包头市中心医院引进高层次和紧缺急需人才招聘29人模拟试卷及参考答案详解1套
- 2025河南九域龙源电力发展集团有限公司等单位高校毕业生招聘180人考前自测高频考点模拟试题及答案详解(典优)
- 2025广西柳钢集团技术技能人才社会招聘模拟试卷有答案详解
- 2025内蒙古师范大学实验幼儿园人员招聘3人考前自测高频考点模拟试题(含答案详解)
- 2025江苏常州纺织服装职业技术学院招聘辅导员6人考前自测高频考点模拟试题参考答案详解
- 2025年杭州市临平区卫生健康局下属事业单位公开招聘编外工作人员39人模拟试卷及答案详解(夺冠系列)
- 2025年中级制图员《理论知识》考试真题(含新版解析)
- 广东省2025年度初级注册安全工程师职业资格考试金属非金属矿山安全复习题及答案
- 小学教师网络信息安全管理规范
- 惊恐障碍课件
- 银行招聘考试题目及答案
- 十二经络课件
- Starter Unit 3 Welcome 单元测试(含答案)人教版(2024)七年级英语上册
- 有趣的化学启蒙课
- 同济大学《高等数学》第七版上、下册答案(详解)
- 员工花名册表
- GB/T 7113-2003绝缘软管定义和一般要求
评论
0/150
提交评论