目录 第1章C++程序设计基础1 1.1C++的发展和主要特点1 1.1.1C++的发展1 1.1.2C++的特点1 1.2第一个C++程序以及C++程序开发过程1 1.2.1第一个C++程序1 1.2.2C++程序开发过程4 1.3C++的常用新特性5 1.3.1C++的输入输出5 1.3.2const定义常量6 1.3.3函数重载7 1.3.4有默认参数的函数9 1.3.5变量的引用11 1.3.6动态分配和释放内存的运算符new和delete16 1.3.7布尔类型18 1.4实例研究: 破解数字谜语19 1.5程序陷阱21 习题122第2章类和对象24 2.1由结构到类的发展24 2.1.1带函数的结构24 2.1.2从结构到类的演化26 2.2面向对象程序设计技术27 2.2.1对象27 2.2.2抽象和类27 2.2.3封装28 2.2.4继承28 2.2.5多态性28 2.3C++类的声明与对象的定义28 2.3.1类的声明28 2.3.2在类体外定义成员函数30 2.3.3定义对象的方法31 2.3.4对象成员的引用33 2.4构造函数34 2.4.1构造函数的定义34 2.4.2用初始化表对数据成员进行初始化和使用默认参数36 2.5析构函数37 2.6构造函数和析构函数的一般执行顺序39 2.7复制构造函数41 2.8用const保护数据46 2.8.1常对象成员46 2.8.2常对象49 2.8.3对象的常引用52 2.9字符串53 2.10友元55 2.10.1友元函数55 2.10.2友元类58 2.11静态成员59 2.11.1静态数据成员59 2.11.2静态成员函数61 2.12this指针63 2.13程序陷阱65 习题266第3章模板75 3.1模板的概念75 3.2函数模板及模板函数77 3.2.1函数模板的声明及生成模板函数77 3.2.2重载函数模板79 3.3类模板及模板类81 3.3.1类模板的声明及生成模板类82 3.3.2在类型形参表中包含常规参数的类模板84 3.4实例研究: 快速排序86 3.5程序陷阱88 习题390第4章运算符重载93 4.1运算符重载的概念93 4.2运算符重载方式96 4.2.1运算符重载为类的成员函数97 4.2.2运算符重载为类的友元函数99 4.2.3运算符重载为普通函数102 4.3典型运算符重载104 4.3.1重载赋值运算符(=)104 4.3.2重载自增1运算符(++)和自减1运算符()108 4.3.3重载下标运算符([])111 4.3.4重载函数调用运算符(())112 4.3.5重载输入运算符(>>)和输出运算符(<<)113 4.4程序陷阱116 习题4116第5章继承118 5.1继承与派生118 5.1.1继承与派生的概念118 5.1.2派生类的声明119 5.1.3派生类与基类中的同名成员123 5.2继承方式125 5.2.1公有继承125 5.2.2私有继承128 5.2.3保护成员和保护继承130 5.3派生类的构造函数和析构函数136 5.3.1构造函数136 5.3.2析构函数140 5.4多继承与虚基类142 5.4.1多继承142 5.4.2多继承引起的多义性问题144 5.4.3虚基类146 5.5程序陷阱151 习题5152第6章多态性159 6.1多态性的概念159 6.2虚函数160 6.2.1虚函数的概念160 6.2.2虚析构函数166 6.3纯虚函数和抽象类168 6.4实例研究: 栈的实现172 6.5程序陷阱179 习题6180第7章输入输出流185 7.1C++的输入输出185 7.1.1输入输出的概念185 7.1.2C++的输入输出流185 7.2标准输出流对象cout186 7.2.1cout186 7.2.2格式输出186 7.2.3输出流类成员函数put()190 7.3标准输入流对象cin191 7.3.1cin191 7.3.2输入流类的常用字符输入的成员函数191 7.3.3输入流类的其他常用成员函数193 7.4文件操作与文件流196 7.4.1文件和文件流的概念196 7.4.2文件的打开与关闭操作197 7.4.3对文本文件的操作199 7.4.4对二进制文件的操作204 7.5实例研究: 简单工资管理系统208 7.6程序陷阱219 习题7221第8章C++的其他主题225 8.1类型转换225 8.1.1标准类型之间的转换225 8.1.2类类型的转换226 8.2内置函数228 8.3异常处理232 8.4命令空间239 8.5程序陷阱242 习题8244参考文献246附录A常用C++编译器使用方法247