读《现代C++程序设计》有感

    正是收获的季节,西安的天气渐渐热了起来,但是宿舍里面却很凉爽和安静,这就给我提供了良好的学习环境。我很幸运成为这次“读IT经典”活动的读者,我选的书籍是《现代C++程序设计》,拿到书的时候已经是6月11号了,所幸的是我对C/C++有着一定的基础,这本书讲的知识通俗易懂,10天的时间足够我将此书看完了,并做了少量的练习。下面就谈谈我看完此书的一些心得,欢迎大家交流与指正。
    我当初选择《现代C++程序设计》的初衷是为了了解现代C++的规范与特点,这里的“现代”应该指的是符合ISO标准的C++。本书包括了C++语言的面向过程和面对对象两部分内容。下面我先谈一下本书的优点:
    一、着力于解决实际问题。很多C++书籍都是一开始便讲解语法,导致初学者看了很长时间还是感觉一头雾水,不知道学习这门语言的作用是什么?本书在一开始就通过实例讲解了面向过程和面向对象的区别,强调了编程人员应该具备的能力和要求;并且在后面的讲解中,也通过大量的解决问题的实例来向读者展示C++语言,这就让大家能够真正达到学以致用的目的。
    二、有良好的编码风格。这个对于初学者很重要,因为一旦大家选择这本书,那么就会按照书籍里面的代码格式进行练习,时间长了就会形成和参考书里面大致相同的编码风格。如果参考书的格式不好,那么就造就了编码不好的程序员。本书就强调了代码格式的重要性,旨在提升程序的易读性和实用性。另外,关于编程风格,大家可以参考林锐博士的《C/C++编程指南》。
    三、章节后面有着大量的练习。一路走来,我发现有两样东西对初学者非常重要:练习和思考。光看不练是不能从本质上提升编程人员的能力的。也许很多人都有这样的体会,平时看书本上的东西很熟练,什么都会,但是一旦交给你一个实际问题,往往不知道从何下手。多练习,多思考,我们才能对知识理解的透彻。“计算机是检验程序的唯一标准”,书上说的不算,你我说的也不算,只有计算机说了才算数。本书提供了大量的练习题,就是为了给大家提供练习和思考的机会,从而提升解决实际问题的能力。
    四、列举了常见的程序错误与缺陷。在每个章节的后面作者都给出了常见的一些编译或者链接错误,并且分析了错误的原因,可供读者在练习出错时参考;同时作者通过不同的图标标识好的编程习惯、注意、问题定位等,这样可以帮助读者养成好的编程习惯和编程风格,问题定位可以帮助读者从深层次剖析和解读程序,以便对知识的理解达到一个更高的深度。
    正是因为此书简单易懂,我相信即使是一个0基础的读者在认真阅读和练习此书之后,也能轻松掌握书中的知识。但是任何事物都有两面性,本书的内容丰富,但是很多东西讲解的不够深入,比如说指针,虽然书中多处有提到指针,但是只是帮助读者理解概念,很多人都说“指针是C语言的灵魂”,我也同意这种说法,如果在指针这一块不做深入的学习和研究,那么在后面的开发过程中,程序员可能会遇到很多内存错误,这些BUG会导致时间成本的增加与浪费。当然,如果你想以后成为C#或者JAVA程序员,那么我强烈为你推荐此书,因为你不需要向C++程序员那样在管理内存那一块达到很深的造诣。
    在此书的印刷上基本上没有什么问题,由于时间的原因,书中的例子我练习比较少。唯一发现一处小错误就是在书的236页表6-1中的strcat举例把';'写到'""'里面去了,还有下面的举例有很多掉了';'(分号),呵呵,其实这些并不算什么,我真正想说的说一个程序员在编程过程中保持高度的严谨性还是十分必要的。
    总体上来说,此书还是很不错的,书上的知识和思想使我受益匪浅。如果你是初学者,那么我为你推荐此书,相信你也能够从书中得到很大的启发。加油,呵呵。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
内容简介 本书采用生动轻松的语言,深入阐述了C++语言和面向对象程序设计技术。书中设计了超过115个完整的经过教学测试的代码示例,不仅分析了这些示例的代码片段,而且还解释了如何把它们组成一个完整的程序。此外,各章后面都提供了大量练习,有助于加强者对相关内容的理解。 本书图文并茂,通俗易懂,真正做到寓教于乐,是一本难得的C++面向对象设计入门教材。 -------------------------------------------------------------------------------- 作者简介 Barbara Johnston,任教于新墨西哥中央社区学院,负责教授AA学位的计算机编程课程。她有20多年的软件开发和教学经验,目前兼任Rapid Imaging SoftwarrtCAM3D实时感知软件。e公司的软件开发工程师,负责开发了美国军用无人驾驶飞行器所使用的SmartCAM3D实时感知软件。 -------------------------------------------------------------------------------- 目录 出版者的话 译者序 前言 第1章 C++概述与软件开发 1.1 什么是C语言和C++ 1.1.1 C和C++历史回顾 1.1.2 C/C++是一门编译语言 1.1.3 为什么许多程序员都选择C++ 1.2 什么是面向对象 1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象设计 1.3.1 ATM——结构化设计 1.3.2 采用面向对象方法的ATM——究竟是谁的任务 1.3.3 汽车维护——结构化设计 1.3.4 采用面向对象方法的汽车维护——究竟是谁的任务 1.4 软件开发技术概述 1.5 问题发现与解决 复习题 第2章 C++的入门知识 2.1 编程基础 2.1.1 算法设计 2.1.2 正确的软件开发步骤 2.2 专业术语及工程创建 2.3 C++程序的一般格式 2.3.1 “Hello World!”程序 2.3.2 “How’s the Weather?”程序 2.4 程序的数据及数据类型 2.4.1 C++的数据类型 2.4.2 容器=数据类型,标签=变量名 2.4.3 数据类型修饰符 2.4.4 问题分析:整型数据究竟有多大 2.5 C++中的变量声明 2.5.1 C++的命名规则 2.5.2 在哪里声明变量 2.6 C++中的运算符 2.6.1 计算路程的程序 2.6.2 从键盘输入程序所需数据 2.6.3 赋值运算符 2.6.4 运算符的优先级 2.6.5 数据类型及其存储的值 2.6.6 算术运算符 2.6.7 自增运算符和自减运算符 2.6.8 复合赋值运算符 2.7 #define、const和数据类型转换 2.7.1 #define预处理指令 2.7.2 const修饰符 2.7.3 const比#define好吗 2.7.4 数据类型转换 2.8 关于键盘输入和屏幕输出的更多内容 2.8.1 转义序列 2.8.2 ios格式标记 2.8.3 流的IO控制符 2.9 开始使用类和对象、C++string类 2.10 练习 复习题 第3章 控制语句和循环 3.1 关系运算符和逻辑运算符 3.2 if语句 3.2.1 if-else语句 3.2.2 问题分析:在if语句中使用大括号 3.2.3 if-else if-else语句 3.2.4 低效的编程方法 3.2.5 if-else程序示例 3.2.6 嵌套if-else语句 3.2.7 条件运算符“?” 3.3 switch语句 3.4 循环 3.4.1 括号的用法 3.4.2 无限循环 3.5 for循环 3.5.1 不要改变循环索引 3.5.2 for循环示例 3.6 while循环 3.7 do while循环 3.8 跳转语句 3.8.1 break语句 3.8.2 continue语句 3.9 问题发现与解决 3.9.1 五个常见错误 3.9.2 调试程序 3.10 C++类与vector类 3.11 总结 3.12 练习 复习题 第4章 函数一:基础 4.1 C++中的函数 4.1.1 只由一个main函数构成的程序 4.1.2 包含多个函数的程序 4.1.3 函数是个好东西 4.1.4 三个重要的问题 4.2 函数:基本格式 4.3 函数的编写要求 4.3.1 你想住在C++旅馆中吗 4.3.2 函数为先 4.3.3 函数声明或函数原型 4.3.4 函数定义、函数标题行与函数体 4.3.5 函数调用 4.3.6 传值调用 4.3.7 问题分析:未声明的标识符 4.4 重载函数 4.5 具有默认输入参数列表的函数 4.6 局部变量、全局变量和静态变量 4.6.1 局部变量 4.6.2 块范围 4.6.3 全局变量 4.6.4 危险的全局变量 4.6.5 问题分析:全局变量y0、y1与cmath 4.6.6 静态变量 4.7 C++stringstream类 4.8 总结 4.9 练习 复习题 第5章 函数二:变量地址、指针以及引用 5.1 数据变量和内存 5.1.1 sizeof运算符 5.1.2 预留内存 5.1.3 计算机内存和十六进制 5.2 取地址运算符& 5.3 指针 5.4 函数、指针以及间接运算符 5.4.1 解决思路 5.4.2 指针和函数 5.4.3 有效处理大型数据 5.5 函数和引用 5.5.1 复习:两种机制 5.5.2 为什么要强调指针的重要性 5.6 queue类 5.7 总结 5.8 练习 复习题 第6章 数组 6.1 使用单个数据变量 6.2 数组基础 6.2.1 数组的索引值从0开始 6.2.2 使用for循环和数组来实现的电话账单程序 6.2.3 数组的声明和初始化 6.2.4 数组越界==严重的问题 6.2.5 vector与数组的比较 6.3 数组和函数 6.3.1 每个数组都有一个指针 6.3.2 数组指针 6.3.3 向函数传递数组:最开始的引用调用 6.3.4 利用数组和函数生成随机数并进行排序 6.4 C字符串,也称为字符数组 6.4.1 字符数组的初始化 6.4.2 null字符 6.4.3 C字符串的输入 6.4.4 C++中提供的字符数组函数 6.5 多维数组 6.5.1 二维数组的初始化 6.5.2 嵌套的for循环和二维数组 6.5.3 利用二维数组来实现Bingo游戏 6.6 多维数组和函数 6.6.1 改进的Bingo卡片程序 6.6.2 白雪公主:利用二维数组来存储姓名 6.7 利用数据文件对数组赋值 6.8 总结 6.9 练习 复习题 第7章 类和对象 7.1 我们所了解的类和对象 7.2 编写自己的类 7.2.1 入门实例:自定义日期类 7.2.2 第一个C++类:Date类 7.2.3 揭开类的生命之谜 7.2.4 set和get函数的作用与VolumeCalc类 7.2.5 PICalculator类 7.3 作为类成员的对象 7.4 类的析构函数 7.5 对象数组 7.6 重载运算符与对象 7.7 指针、引用和类 7.7.1 指针和引用实例 7.7.2 处理日期和时间的程序实例 7.8 总结 7.9 练习 复习题 第8章 继承和虚函数 8.1 为什么继承如此重要 8.1.1 IceCreamDialog实例 8.1.2 Counter类实例 8.2 继承基础 8.2.1 Counter和DeluxeCounter实例 8.2.2 保护成员 8.2.3 员工、老板和CEO 8.3 访问控制符的规范和多继承 8.4 继承、构造和析构 8.4.1 构造函数和析构函数回顾 8.4.2 基类和派生类的默认构造函数——没有参数 8.4.3 在重载的构造函数中使用参数 8.4.4 基类和派生类的析构函数 8.4.5 医生也是人 8.4.6 关于派生类和基类构造函数的规则 8.5 多态和虚函数 8.5.1 多态——同一个接口,不同的行为 8.5.2 什么是虚函数 8.5.3 虚函数的作用 8.6 总结 8.7 练习 复习题 附录A 学习使用Visual C++2005Express Edition 附录B C++关键字表 附录C C++运算符 附录D ASCII码 附录E 位、字节、内存和十六进制表示 附录F 文件输入/输出 附录G 部分C++类 附录H 多文件程序 附录I Microsoft visual C++2005Express Edition的调试器 术语表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值