第八章_运算符重载及流类库(2011-3-28).ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章_运算符重载及流类库(2011-3-28)

/36 第九章 运算符重载及流类库 本章主要内容 运算符重载 流类库 文件流 运算符重载 C++语言允许程序员重新定义已有的运算符,使其能按用户的要求完成一些特定的操作,这就是所谓的运算符重载。 运算符重载与函数重载相似,其目的是设置某一运算符,让它具有另一种功能,尽管此运算符在原先C++语言中代表另一种含义,但他们彼此之间并不冲突。C++会根据运算符的位置辨别应使用哪一种功能进行运算。 运算符重载 C++内部任何运算都是通过函数来实现的。运算符重载的实质就是函数重载。 在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的函数,这个过程是在编译过程中完成的。 运算符重载 运算符的重载形式有两种:重载为类的成员函数和重载为类的友元函数。 运算符重载为类的成员函数的语法形式如下: 函数类型 operator 运算符(形参表) { 函数体; } 运算符重载为类的友元函数的语法形式如下: friend 函数类型 operator 运算符(形参表) { 函数体; } 例9.1 P186 、和++运算符重载实例 插入符函数的一般形式为: ostream operator (ostream 函数的流, 类名对象名) { …… //函数代码 return函数的流; } 提取符函数的一般形式为: istream operator (istream 函数的流, 类名对象名) { …… //函数代码 return函数的流; } 例9.2 例9.3 例9.4 类运算符和友元运算符的区别 P190 如果运算符所需的操作数,尤其是第一个操作数希望进行隐式类型转换,则该运算符应该通过友元来重载。 另一方面,如果一个运算符的操作需要修改类对象的状态,则应当使用类运算符,这样更符合数据封装的要求。但参数是使用引用还是对象,则要根据运算符在使用中可能出现的情况来决定。 friend complex operator + (形参1,形参2) { ……//函数体定义 } 关键字friend把 complex operator + (形参1,形参2)说明成类的友元,使得它能够访问类complex 的私有数据。 形参可以都是对象或者对象的引用; 形参也可以一个为对象一个为引用,这要视具体问题而定。 例9.5 例9.6 流类库 在C++中,输入输出操作是由“流”来处理的。所谓流,它是C++的一个核心概念,数据从一个位置到另一个位置的流动抽象为流。 当数据从键盘或磁盘文件流入到程序中时,这样的流称为输入流,把输入数据来自的地方称为“源” 当数据从程序中流向屏幕或磁盘文件时,这样的流称为输出流,把接收输出数据的地方称为“目标” 流类库 当流被建立后就可以使用一些特定的操作从流中获取数据,如输入操作;也可向流中添加数据,如输出操作。 从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作。 执行输入、输出的类体系叫做流类 提供这个流类实现的系统库叫做流类库 流类库 C++针对流的特点,构造了功能强大的输入输出流库 流类库 P194 为了方便用户对基本输入输出流进行操作,只要在程序中包含头文件iostream,就可以使用C++提供的四个预定义的标准流对象:cin、cout、cerr和clog,它们都是std名称空间的流对象。 cin是istream类的对象,用处理可定向得标准输入,即键盘输入。 cout是ostream类的对象,用处理标准输出,即屏幕输出。 cerr和clog都是ostream类的对象,用来处理标准出错信息,并将信息显示在屏幕上。 在这四个标准流对象中,除了cerr不支持缓冲(发送给它的内容立即被输出到屏幕,并且不能被重定向到其它地方),其余三个都带有缓冲区。 标准流通常使用提取运算符“”和插入运算符“”来进行输入输出操作的,而且系统还会自动地完成数据类型的转换。 ?一种具体的物理设备,比如说键盘联接起来。 C++的流类库预定义的4个流所联接起的具体设备为: cin 与标准输入设备相联接 cout 与标准输出设备相联接 cerr 与标准错误输出设备相联接(非缓冲方式) clog 与标准错误输出设备相联接(缓冲方式) 文件流 C++将文件看作是由连续的字符(字节)的数据顺序组成的。根据文件中数据的组织方式,可分为文本文件(ASCII文件)和二进制文件。 文本文件中每一个字节用以存放一个字符的ASCII码值,而二进制文件是将数据用二进制形式存放在文件中,它保持了数据在内存中存放的原

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档