小兔网

通过前面的学习我们知道,C++ 程序中一般用 ostream 类的 cout 输出流对象和 << 输出运算符实现输出,并且 cout 输出流在内存中有相应的缓冲区。但有时用户还有特殊的输出需求,例如只输出一个字符,这种情况下可以借助该类提供的 put() 成员方法实现。

本教程一开始就提到,C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案:

上节讲到,隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么。

通常情况下,C++ 程序中使用 cin 输入流实现数据的输入,用 cout 输出流实现数据的输出。除此之外,C++ 还提供有适用于特定场景的输入输出流,比如 cerr、clog 等。

C++输入输出流本质上就是已经定义好的类对象,之所以称它们为"流",C++ 开发者认为数据传输(包含输入和输出)的过程像水一样,从一个地方流到另一个地方,所以称实现输入的为输入流,实现数据输出的为输出流。

作为类对象,C++输入流和输出流不仅可以实现基本的输入输出操作,通过类内部的成员函数,还可以满足特殊场景中的输入输出需求,这些知识在本章中都会做详细讲解。

转换构造函数能够将其它类型转换为当前类类型(例如将 double 类型转换为 Complex 类型),但是不能反过来将当前类类型转换为其它类型(例如将 Complex 类型转换为 double 类型)。