C++高级篇(2)——运算符重载及流类库

引言:

               C++俩大难点,一个是指针,一个就是运算符重载及流类库,你了解吗?

概述:

              运算符重载就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。流类库,就是C++数据传输和控制流的类的集合仓库。

内容:

               一 运算符重载

             1 运算符重载的实质:

                           C++中任何运算都离不开函数,所以运算符重载的实质就是函数重载,要重载某个运算符,只需重载相对应的函数即可,与平常的函数重载稍微不同的就是关键字不同。需要使用关键“operator”和要重载的运算符连用,构成一个运算符函数名。

             2  运算符重载要求:

                 C++中运算符大部分都可以重载,不能重载的只有.、::、*和:。前面三个是因为在C++中有特定的含义,不能重载,以免发生冲突。“:”则是因为不值得重载。另外,“sizeof”和“#”不是运算符,所以不能重载,并且=、()、[]、->这四个运算符只能用类运算符来重载。

                 运算符经过重载后,并不改变原有的优先级,也不改变它所需的操作数目。

             3 类运算符和友元运算符的区别

                 如果运算符所需的操作数(尤其是第一个操作数)希望进行隐式类型转换,则运算符应通过友元来重载;另一方面,如果一个运算符的操作需要修改类对象的状态,则应当使用类运算符。但参数是引用还是对象,要根据运算符在使用中可能出现的情况来决定。

                 若对象作为重载运算符函数的参数,则可以使用构造函数将常量转换成该类型的对象;若使用引用作为参数,因为这些常量不能作为对象使用,所以编译系统会报错。

         二 流类库:

              1 组成:C++流类库由几个进行I/O操作的基础类和几个支持特定种类的源和目标的I/O操作的类组成。

                 (1)基础类:ios类是istream类和ostream类的虚基类,用来提供对六进行格式化I/O操作和错误处理的成员函数。通过关键字virtual可将公共积累说明为虚基类。

                           从ios类公有派生的istream和ostream俩个类分别提供对流进行提取操作和插入操作的成员函数,而iostream类通过组合istream和ostream俩个类来支持对一个流进行双向(输入输出)操作,并没有提供新的成员函数。

                 (2)四大流对象:cin、cout、cerr、clog。cin可视为istream的一个对象,同理cout可以视为ostream类的一个对象。进行实际I/O操作时,必须将流和一种具体的物理设备(键盘)联接起来,C++的流类库预定四大流对象所联接的具体设备:cin与标准输入设备相联接;cout与标准输出设备相联接;cerr与标准错误输出设备相联接(非缓冲方式);clog与标准错误输出设备相联接(缓冲方式)。

               2 ios_base类

                   ios_base类派生ios类,ios类又是istream类和ostream类的虚基类。

               3 文件流

                   C++中共有输入文件流、输出文件流和输入输出文件流三种,并已将它们标准化。要打开一个输入文件流,需要定义一个ifstream类型的对象;要打开一个输出文件流,需要定义一个ofstream类型的对象;如果要打开输入输出文件流,则要定义一个fstream类型的对象。这三种类型都定义在头文件<fstream>里。

总结:

              运算符重载重要理解其实质,在特定的场景下使用;流类库基本上都用得到,一般都有输入输出语句,所以要重点掌握流类库。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值