类的深入剖析(II)课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类的深入剖析(II)课件

static成员变量 引入原因 有些特殊的数据成员为某个类的所有对象所共享,也就是它不是属于具体的对象,而是属于整个类。 定义 成员变量前加static关键字,成为static成员变量 初始化赋值 不能用构造函数初始化赋值; 不能放在主函数中初始化; 在程序定义该类的任何对象之前,对类中的static数据成员单独初始化; static成员变量 文件范围内使用下边语句格式进行初始化: 数据类型 类名::static数据成员名 = 初始化值; Static成员函数 引入原因 - 对static数据成员的访问。 定义 - 函数定义前加static关键字 - 一般为公有,也可以定义为私有 调用 类名::static 成员函数名(参数表) class Employee { private: char name[30]; float salary; static float allSalary; public: Employee(char *n, float s) { strcpy(name, n); salary = s; allSalary = allSalary + salary; } ~Employee(void) { allSalary = allSalary – salary; } static float GetAllSalary(void) { return allSalary; } }; float Employee::allSalary = 0; int main() { Employee e1(张, 100); Employee e2(王, 200); Employee e3(李, 300); float all; all = Employee::GetAllSalary(); cout AllSalary = all endl; } 书例:415-417 代理类 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理类 创建代理类的步骤: 1.定义想要隐藏的类 2.定义一个与要隐藏类一样的接口(除了构造函数和析构函数名称不同之外)的代理类。 3.在代理类中定义一个private成员,该数据成员是个指向隐藏类的指针。 4.代理类各个函数的实现就是用创建的指针访问相对应的隐藏类中的成员函数。 例子:P420-422 * 有时一些类外部的函数需要调用类中的私有成员,为方便编程、或为提高程序运行效率,可定义这些函数为该类的友元函数。当一个函数定义为一个类的友元函数时,它就可像该类的成员函数那样用“·”或“-”运算符来调用该类中的私有成员。 * 设计职工类,要求职工的薪水总和随着职工人数的增加和减少自动改变 类的深入剖析(第II部分) 提纲 const对象、const成员函数和const数据成员 组成 friened(友元)函数和friend(友元)类 This指针 Static 成员变量和成员函数 数据抽象和信息隐藏 代理类 const对象 定义对象时用const进行修饰,称为常对象,它的数据成员值在对象的整个生存期间内不能被改变。也就是说,常对象在定义时必须进行初始化,而且不能被更新。 使用常量,既实现了数据共享、又可以保证数据不会被改变。 常对象定义一般形式: const 类名 对象名([参数列表]); 或者:类名 const 对象名([参数列表]); const成员函数 对于类的某个成员函数,使用const关键字修饰,称为常成员函数。常对象只能调用常成员函数,保证常对象的数据成员不能被修改。 例如:int Time::getHour() const{… } const成员函数 常成员函数的特点: const是函数类型的一个组成部分,在函数实现时也要带const关键字。 常成员函数不能更新对象的数据成员,也不能调用该类中的非常成员函数。 常对象只能调用常成员函数,但是常成员函数也可以被普通对象来调用。 const成员函数 const关键字可以被用于参与对重载函数的区分。const成员函数进行非const版本的重载。编译器可以根据情况选择相应的重载函数。如果对象是const,使用const版本的重载函数,如果是非const,使用非const版本的重载函数。 const成员函数 构造函数和析构函数不进行const声明。必须允许构造函数修改对象,这样对象才能适当的初始化。析构函数必须能够在对象使用的内存被系统回收之前进行

文档评论(0)

叮当文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档