




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类的静态成员类的静态成员 问题的引入问题的引入 l在某些情况下,某些特殊类类型的所有对 象可能需要访问同一个变量。例如:要计 数在程序的任意一点总共创建了多少个此 类类型的对象。 l能否采用定义全局变量的方式来实现? l这样做会有什么问题? 静态成员的使用 l可定义静态成员变量,实现同一类的所有对象共享一个变 量。 l在类体中的数据成员声明前面加上关键字static,就使该 数据成员成为静态的成员。 static int Student_Num; l静态数据成员被当作该类类型的全局变量。对于非静态数 据成员每个类对象都有自己的拷贝,而静态数据成员只有 一份由该类类型的所有对象共享访问的空间。 静态成员的使用 l由于类的静态成员变量并不占类对象本身的存储空间,而 是独立存在的。因此在对象定义的时候,也不会为静态成 员变量分配内存空间。故静态成员要单独在类外初始化。 int CStu:Student_Num; l初始化可以给静态成员赋值,如果不赋值默认为0; 静态成员的优点 l可以实现信息隐藏,静态成员可以是 private 成员,而全局变量不能。 l静态数据成员没有进入程序的全局名字空 间,因此不存在与程序中其他全局名字冲 突的可能性。 静态成员函数 l同样,成员函数也可以被定义为静态的。只要在声明前加 上关键字static。 l其主要的作用就是为了处理静态成员变量的。 l静态成员函数属于类,而不属于某个对象,因此静态成员 函数没有this指针。 l调用静态函数时,必须加上域运算符“:”。 CStu:ShowNum(); 由于静态成员函数没有this指针,所以他无法访问类中的非静态成员变量及函数 类模板类模板 问题的引入问题的引入 l对于类的声明来说,存在这样的问题有时候有多个类 ,其功能是相同的,仅仅是数据成员的数据类型不同。 l如下面这个比较两个数类: class Compare private: int a,b; public: Compare(int x,int y); int Max(); class Compare private: double a,b; public: Compare(double x, double y); double Max(); 类模板的提出类模板的提出 lC+为了减少重复工作,添加了模板(template)功能,有 效的解决了上述问题。 l将类的定义方法改为: template class Compare private: numtype a,b; public: Compare(numtype x, numtype y); numtype Max(); template ltemplate是关键字,表示模板 l后面的尖括号内是参数列表,class表示后面是类型参数 。 l类模板的定义区别于普通类的定义,不能将成员函数的说 明和实现分开在不同的文件里。否则会产生连接错误。通 常要统一写在一个.h文件中。 l编写每个成员函数的具体实现时,应写成类模板格式: template 函数虚拟类型 类名:函数名(参数表) 类模板的使用类模板的使用 l普通类的使用类对象的定义: compare a(10,20); 类模板的使用时,对象的定义是否能写成这样?系统是 否能自动判断参数的类型? l类模板的使用: compare a(10,20); 类模板创建的步骤类模板创建的步骤 l构建类模板时,先写一个普通类,一般结构简单,不易出 错。 l将类中需要变更的类型名(如int要替换为float等)改成 自己写的虚拟名字。 l在类声明前加上一行,格式为: template l在类模板外定义成员函数时,应写成类模板格式: template 函数虚拟类型 类名:函数名(参数表) l注意: l类模板的参数可以有一个,也可以有多个,每个类型前必 须加class: template class compare ; 在对象定义时应写为: compare a; l例子中的numtype,Num1,Num2只是一个参数名,可以随 便起,只要是合法的标识符就行。他并不是一个实际的类 型名,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年辽宁省中考语文试卷(含答案与解析)
- 2025年高考江苏物理试题+答案
- 香雪作业题目及答案
- 草坪学考试题及答案mooc
- 现代史题目及答案解析
- 葡萄培训知识文案简短课件
- 2025年艾灸知识考试试题及答案
- 萨摩耶宠物知识培训班课件
- 2025钢筋买卖合同范本
- 2024译林版八年级英语上册Unit 1 单元测试卷及答案(含三套题)
- 公司对公司走账合同范本
- 核电站主要材料质量保证措施
- (2025年标准)挖桩孔协议书
- 消化内科课件模板
- 拍摄与剪辑基础知识培训课件
- 项目实施进程汇报
- 2025年时事政治考试100题(附答案)
- 医学检验质量安全管理培训
- 2025仓库保管员试题及答案
- 保险执业登记管理制度
- 2025-2030中国电子墨水屏幕行业市场发展趋势与前景展望战略分析研究报告
评论
0/150
提交评论