C语言进阶

张萃

目录

  • 1 第一章  C++的初步知识
    • 1.1 从C到C++
    • 1.2 C++的词法和词法规则
    • 1.3 最简单的C++程序
    • 1.4 C++对C的扩充
      • 1.4.1 C++的输入输出
      • 1.4.2 用const定义常量
      • 1.4.3 函数原型声明
      • 1.4.4 函数重载
      • 1.4.5 函数模板
      • 1.4.6 有默认参数的函数
      • 1.4.7 变量的引用
      • 1.4.8 内置函数
      • 1.4.9 作用域运算符
      • 1.4.10 字符串变量
      • 1.4.11 动态分配/回收内存运算符
  • 2 类和对象
    • 2.1 面向对象程序设计方法概述
    • 2.2 类的声明和对象的定义
    • 2.3 类的成员函数
    • 2.4 对象成员的引用
    • 2.5 类和对象的简单应用
    • 2.6 类的封闭性和信息隐蔽
  • 3 关于类和对象的进一步讨论
    • 3.1 构造函数
    • 3.2 析构函数
    • 3.3 调用构造函数和析构函数的顺序
    • 3.4 对象数组
    • 3.5 对象指针
    • 3.6 共用数据的保护
    • 3.7 对象的动态建立和释放
    • 3.8 对象的赋值和复制
    • 3.9 静态成员
    • 3.10 友元
    • 3.11 类模板
  • 4 运算符重载
    • 4.1 什么是运算符重载
    • 4.2 运算符重载的方法
    • 4.3 重载运算符的规则
    • 4.4 运算符重载函数作为类成员函数和友元函数
    • 4.5 重载双目运算符
    • 4.6 重载单目运算符
    • 4.7 重载流插入运算符和流提取运算符
  • 5 继承与派生
    • 5.1 继承与派生的概念
    • 5.2 派生类的声明方式
    • 5.3 派生类的构成
    • 5.4 派生类成员的访问属性类型兼容规则
    • 5.5 派生类的构造函数和析构函数
    • 5.6 多重继承
  • 6 多态性与虚函数
    • 6.1 多态性的概念
    • 6.2 一个典型的例子
    • 6.3 虚函数
    • 6.4 纯虚函数与抽象类
  • 7 输入输出流
    • 7.1 C++的输入输出
    • 7.2 标准输出流
    • 7.3 标准输入流
    • 7.4 对数据文件的操作与文件流
    • 7.5 字符串流
C++的输入输出

       

       

        在C++中,输入输出是通过流完成的。

         C++的输出操作将一个对象的状态转换成一个字符序列,输出到某个地方。 输入操作则是从某个地方接收一个字符序列,然后将其转换成一个对象的状态所要求的格式。

       把接收存放输出数据的地方叫做目标,把输入数据来自的地方叫做源,输入和输出操作可以看成字符序列在源、目标和对象之间的流动。

        C++把与输入和输出有关的操作定义为一个类,放在一个系统库里,供用户调用。 这个执行输入和输出操作的类叫做流类,用流类定义的对象称为流对象。提供流类实现的系统叫做流类库。

       1、  流类库


       说明:

         (1)ios是“输入输出流”类,为用户的输入输出提供服务,streambuf是处理“流缓冲区”的类,包括缓冲区起始地址、读写指针和对缓冲区的读写操作。

        (2)图7-1是简化的流类库的基本类等级图,而不是直接的继承关系图。其实它们都是模板类,箭头表示的是类等级关系。

        (3) 图中的等级关系在头文件iostream.h中说明。

        (4)图7-1中,ios类中一个指针成员指向streambuf类的对象。Streambuf类管理流的缓冲区。

        (5)由于数据隐蔽和封装的需要,普通用户只使用ios、istream和ostream类提供的公有接口,完成流的提取和插入操作。

         (6)ios类是istream类和ostream类的虚基类,提供对流的格式化I/O操作和错误处理的成员处理的成员函数。从ios类公有派生珠istream类和ostream类分别提供对流进行提取和插入操作的成员函数,而iostream类通过组合istream类和ostream类支持对一个流进行双向操作,它并没有提供新成员函数。

        (7) iostream中预定义四个流对象,它们分别是cin、cout、cerr、clog。

        事实上可以将cin视为istream的一个对象,而cout视为ostream的一个对象。

        流是一个抽象的概念,当实际进行I/O操作时,必须将流和一个具体的物理设备连接起来。

         C++的流类库预定义的四个流所连接的设备如表7-1          

 

 
 

设备

 
 

cin

 
 

标准输入设备    

 


 
 

cout

 
 

标准输出设备  

 


 
 

cerr

 
 

标准错误输出设备(非缓冲方式)

 
 

clog

 
 


 

标准错误输出设备(缓冲方式)

 


 

         2、与iostream类库有关的头文件

        iostream类库中不同的类的声明被放在不同的头文件中,用户在程序中用#include命令包含所需的头文件就相当于在程序中声明了所需的类。

       (1)iostream      输入输出流操作

       (2)fstream        管理文件的I/O操作

       (3)strstream     字符流的I/O操作

       (4)stdiostream  混合使用C和C++

       (5)iomanip        使用格式化I/O操作

        在iostream头文件中重载了>> 和<<运算符。用于标准类型数据的输入和输出。