




已阅读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-2026学年山东省名校考试联盟高三上学期开学考历史试题及答案
- 中国蝉花多糖项目创业投资方案
- 2025年学校综合楼扩建申请报告
- 谣言止于智者课件
- 融媒体概论课件
- 艾媒咨询2025年中国新式茶饮大数据研究及消费行为调查数据
- 雷达式水位计安装单元工程质量验收评定表
- 招商银行笔试题库及参考答案
- 挂靠公司走帐协议书范本
- 2025年中国电信集团校园招聘笔试模拟试题集
- 全屋定制经销商合同协议
- 2024年仁怀市辅警真题
- 知道智慧树有礼同行伴礼一生-大学生礼仪修养满分测试答案
- 2025-2026学年苏科版(2023)小学劳动技术四年级上册教学计划及进度表
- 胸腺-胸腺瘤课件
评论
0/150
提交评论