C++编程学习(第44天)

C++的多态性

多态性是面向对象程序设计的一个重要特征,多态的意思是一个事务有多种形态。

在面向对象方法中,一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。也就是说,每个对象可以用自己的方式取响应共同的消息,所谓消息就是调用函数,不同的行为即执行不同的函数。

在C++中,多态性表现形式之一是:具有不同功能的函数可以用同一个函数名,这样就可以实现用一个函数名调用不同内容的函数。

从系统实现的角度来看,多态性分为静态多态性和动态多态性。

静态多态性是通过函数重载实现的,动态多态性是通过虚函数实现的。

输入输出流

输入输出的含义

程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。

C++的输入与输出包括三个内容:

1、对系统指定的标准设备的输入和输出,即从键盘输入数据,输出到显示器屏幕,这种输入输出称为标准的输入输出,简称标准I/O。

2、以外存(磁盘、光盘)为对象进行输入输出,如从磁盘文件输入数据,数据输出到磁盘文件,简称文件I/O。

3、对内存中指定的空间进行输入输出。通常指定一个字符数组作为存储空间,这种输入和输出称为字符串输入输出,简称串I/O。

注意,C语言采用函数(scanf和printf)实现输入输出,C++采用类对象(cin和cout)来实现输入输出。

C++的输入输出流

输入和输出是数据传送的过程,数据如流水一样从一处流向另一处,C++形象地将此过程称为流。
C++的输入输出流是指由若干字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一个对象,流表示了信息从源到目的端的流动。

实际上,在内存中为每一个数据流开辟一个内存缓冲区,用来存放流中的数据。

在C++中,输入输出流被定义为类,C++的I/O库中的类称为流类,用流类定义的对象称为流对象。

标准输出流

标准输出流是流向标准输出设备(显示器)的数据。

ostream类定义了三个输出流对象,即cout、cerr和clog。

cout流对象

cout是console output的缩写,意为在控制台的输出。

1、cout不是C++预定义的关键字,它是ostream流派生类的对象,在iostream头文件中定义。

2、用cout和<<输出标准类型的数据时,由于系统已进行了定义,可以不考虑数据是什么类型,系统会判断数据的类型并根据其类型选择调用与之匹配的运算符重载函数。

3、cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl时,不管缓冲区是否已满,都立即输出流中所有数据,然后插入一个换行符,并刷新cout以清空缓冲区。

4、在iostream中只对<<和>>运算符用于标准类型数据的输入输出进行了重载,但未对用户声明的类型数据的输入输出进行重载。

cerr流对象

cerr流对象是标准错误流。cerr流已被指定为与显示器关联,cerr的作用是向标准错误设备输出有关出错信息。

cerr是console error的缩写,意为在控制台显示出错信息。cerr与标准输出流cout的作用和用法差不多,但有一点不同,cout流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件,而cerr流中的信息只能在显示器输出。

clog流对象

clog流对象也是标准错误流,它是console log的缩写,它的作用和cerr相同,都是在终端显示器上显示出错信息,它们之间只有一个微小区别,cerr是不经过缓冲区直接向显示器上输出有关信息,
而clog中信息存放在缓冲区中,缓冲区满后或遇endl时向显示器输出。

用流成员函数put输出字符

ostream类除了提供用于格式控制的成员函数外,还提供专用于输出单个字符的成员函数put。

标准输入流

标准输入流是从标准输入设备(键盘)流向程序的数据。

cin流

cin是istream类的派生类的对象,它从标准输入设备获取数据,程序中的变量通过流提取符>>从流中提取数据。

只有在键盘输入完数据并按enter键后,改行数据才被送入键盘缓冲区,形成输入流,提取运算符>>才能从中提取数据。

用流成员函数get输入字符

流成员函数get有三种形式:无参数的、有一个参数的和有三个参数的。

无参数的get参数,其调用形式为cin.get()用来从指定的输入流中提取一个字符,函数的返回值就是读入的字符。

有一个参数的get函数,其调用形式为cin.get(ch)其作用是从输入流中读取一个字符,赋给字符变量ch。

有三个参数的get函数,其调用形式为cin.get(字符数组,字符个数n,终止字符)或cin.get(字符指针,字符个数n,终止字符)其作用是从输入流中读取n-1个字符,赋给指定的字符数组或字符指针指向的数组,如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取。

用成员函数getline函数读取一行字符

getline函数的作用是从输入流中读取一行字符,其用法与带三个参数的get函数类似,cin.getline(字符数组或指针,字符个数n,终止标志符)。

对数据文件的操作与文件流
文件的概念

文件(file)是程序设计中一个重要概念,所谓文件,一般指存储在外部介质上数据的集合,操作系统是以文件为单位对数据进行管理的。

对用户来说,常用到的文件有两大类,一类是程序文件,另一类是数据文件,在程序运行时,常常需要将一些数据输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。

根据文件中数据的组织形式,可分为ASCII文件和二进制文件。

字符串流

字符串流是以内存中用户定义的字符数组为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组将数据读入,字符串流也称为内存流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武当豆豆

为国家GDP快速增长做贡献

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值