第四章 静态成员、模版和流.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文档。上传文档
查看更多
第四章 静态成员、模版和流

第四章 静态成员、模版和流 一、静态成员与静态成员函数 1、定义 在类的成员类型声明前面加上static关键字,即可使该成员成为静态成员 在成员函数的定义前加上static关键字,可将该成员函数声明为静态成员函数。 2、静态成员的特点 普通成员:该类的每一实例都有一个该成员的副本。 静态成员:该类的所有实例都共享同一个静态成员 3、静态成员的初始化和使用 静态成员初始化与一般成员初始化不同 含静态成员的类只能定义成全局类,即在所有函数体之外进行定义。 含静态成员的类在使用前必须进行初始化。初始化在类定义的外部进行,形式: 类型名 类名::静态变量名=数值表达式 例:int Demo::a=0; 公有静态成员使用时既可以采用变量名.静态成员的方式,也可以采用类名::静态成员的方式 私有静态成员不能在类外直接访问 4、静态成员函数 如果类的成员函数只对静态成员进行操作,则可将它定义成静态成员函数 静态成员函数只能引用静态成员,不能引用非静态成员 静态成员函数不能用this指针 公有静态成员函数可以通过该类实例进行调用,也可以直接用类名::静态成员函数名的形式进行调用 私有静态成员函数不能在类定义之外直接使用 静态成员用法举例 #includeiostream.h class Demo{ static int a; int b; public: Demo(int a=0,int b=0):b(0){} static int c; static void print(){ coutstatic a=a; //静态成员函数中不能引用非静态成员 //cout“b=”b; //b是非静态成员 } }; int Demo::a=3,Demo::c=4; main(){ Demo ins1; Demo ins2; ins2.print(); Demo::print(); //静态方法的特殊调用 形式 ins2.c=3; cout Demo::c ; //公有静态成员的使用 //Demo::a=4; //不能直接访问私有静态成员 } 二、类模板 1、定义 template 模板参数表 类声明 2、用途 使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型(包括系统预定义的和用户自定义的)。 3、类模板的应用举例 三、I/O流 1、 I/O流的概念 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。 流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。 1、 I/O流的概念 程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。 读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。 2、输出流 ostream类通过派生类ostream_withassign支持预先定义的流对象: cout 标准输出 cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出。 clog 类似于cerr,但是有缓冲,缓冲区满时被输出。 2、输出流 ofstream类支持磁盘文件输出 构造一个ofstream类的对象。在打开文件之前或之后可以指定ofstream对象接受二进制或文本模式数据。 如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动打开的 ofstream myFile(filename,iosmode); 2、输出流 可以在调用缺省构造函数之后使用open成员函数打开文件 ofstream myFile; //声明一个静态输出文件流对象 myFile.open(filename,iosmode); //打开文件,使流对象与文件建立联系 ofstream* pmyFile = new ofstream; //建立一个动态的输出文件流对象 pmyFile-open(filename,iosmode); //打开文件,使流对象与文件建立联系 iosmode的取值 iosmode可以取以下值 : ios::out 创建一个新文件,如果文件已存在,则会将原有文件覆盖 ios::app 在已有的文件尾部追加数据,原有的文件不会被覆盖。如果文件不存在,则创建之 ios::binary 指定文件是一个二进制文件,如果没有指定该值,则文件默认为文本类型文件。可以和前两项中的一项利用“|”运算符组合使用 使用ios类的这些静态

文档评论(0)

ajgoaw + 关注
文档贡献者

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

1亿VIP精品文档

相关文档