您的浏览历史

C++编程你也行

本书其他购买

$
促销活动
  • [本书]参加机械工业出版社华章公司满58元赠书活动

基本信息

编辑推荐

本书可供完全不同的读者群体使用。无论你是否有编程基础,都可以从本书中受益。

内容简介回到顶部↑

本书是一本优秀的C++教材,内容包括:基础类型、操作符和简单变量,循环和决策,命名空间和C++标准库,用C++编写函数,行为、序列点和求值顺序,泛型函数,用户自定义类型、指针、智能指针、迭代器和动态实例,动态对象创建和多态对象,流、文件和持久性,异常,重载操作符和转换操作符,容器、迭代器和算法等。作者重点介绍类、模板、操作符重载、异常、命名空间等从事现代C++编程不可或缺的语言特性,以及容器、算法、迭代器等重要的标准库组件。本书通过例子代码和“代码详解” ,将C++的精华展示给读者。
本书可供完全不同的读者群体使用。无论你是否有编程基础,都可以从本书中受益。

作译者回到顶部↑

本书提供作译者介绍

Francis Glassborow,曾任ACCU(Association of C&C++ Users)的主席,编辑了该团体20世纪90年代的主要出版物。他对市场上数百本C++书籍发表过评论,但他的智慧和兴趣不仅仅局限于这门语言。他还是EXE的定期专栏作家,并且是著名的ACCU大会最初七年的主席。他领导着C和C++方面ISO工作组委员会的英国代表团。他是公认的C和C++领域世界级的领军人物之一。
.. << 查看详细

作者: (美)Francis Glassborow
Francis Glassborow,曾任ACCU(Association of C&C++ Users)的主席,编辑了该团体20世纪90年代的主要出版物。他对市场上数百本C++书籍发表过评论,但他的智慧和兴趣不仅仅局限于这门语言。他还是.EXE的定期专栏作家,并且是著名的ACCU大会最初七年的主席。他领导着C和C++方面ISO工作组委员会的英国代表团。他是公认的C和C++领域世界级的领军人物之一。.. << 查看详细

[同作者作品]
You Can Do It——C++编程新手互动教程(高校学生编程入门指南,互动式教学,切实确保学习质量)
C++编程你也行

目录回到顶部↑

译者序
序言
致谢
前言
C++概观
第1章 起步走
 1.1 创建“HelloWorld”程序
 1.2 代码的含义
 1.3 第二个程序:空Playpen
 1.4 代码的含义
 1.5 其他尝试
 1.6 总结
第2章 基础类型、操作符和简单变量
 2.1 一个简单的程序
 2.2 什么是类型
 2.3 何谓基础类型
 2.4 负整数的表示
 2.5 派生类型
 2.6 声明和定义
 2.7 C++中的名字

译者序回到顶部↑

怎样才能入门C++?曾有许多学生问过我这个问题,而我的答复总是:阅读一本好的入门书,不断地写代码,写有意义的代码。这其实也是入门任何其他编程语言的必由之路。本书就是一本优秀的C++入门教程。.
C++语言太庞大了。作者Francis精心挑选了类、模板、操作符重载、异常、命名空间等从事现代C++编程不可或缺的语言特性,以及容器、算法、迭代器等重要的标准库组件,通过例子代码及其“代码详解”,将它们清晰地展示在你的面前。每章末尾给出的语言和库参考,有利于进一步加深对C++相关知识点的理解。随书光盘提供了一个控制台GUI库,以便读者参考,写出更有意思、更有意义的程序。除了认真阅读外,完成每一个实验、任务和练习尤其重要。如果不动手写代码,所谓的C++学习只是纸上谈兵。
Francis在C++社区有着很高的声望。他拥有30多年的编程和教学经验,是C++标准委员会的一名重要成员。他曾任ACCU(Association of C & C++ Users)主席,评阅过数百本C++书籍。他的背景和经验就是本书的品质保证。对我而言,在找到或写出更好的教材之前,本书将一直用作我授课的C++教材。..
鉴于本书的中国读者此前很可能已学过C,因此这里我要特别提醒一下,C++和C有着不同的设计理念,二者支持不同的编程风格。从应用领域看,C比较适合于编写小型嵌入式系统,C++则主要用于编写对于效率有着严格要求的大规模应用程序,比如操作系统、数据库、办公软件以及大型网游等。在从C转换到C++的过程中,你首先要转换编程思维:将C++当作一门全新的语言比把它看作C的超集更利于C++的学习。
C++的主要优点在于灵活性、效率以及编译期类型计算功能。它提供了丰富的语言特性和库,支持多种编程范型,绝不限制程序员应该做什么或如何做。在解决大规模程序的组织问题的同时,C++还完美地继承了C的高效性。在各种动态语言粉墨登场的时代,C++坚定地朝着另一个方向大踏步前进,不断强化其静态特性。强大的编译期类型计算功能终将成为C++无与伦比的特色。
在目前最流行的主流编程语言中,C++的规模和复杂度无疑是最大的,职业C++编程的准入门槛也越来越高。在“快餐语言”大行其道的今天,高水平的C++程序员的人数似乎少见增长。然而,C++所擅长的应用领域却又无任何其他编程语言能够代替。掌握了C++,你就有能力迅速切换到任何一门其他语言。别再犹豫,现在就开始学习C++,做编程的王者!
感谢施康先生协助初译。感谢机械工业出版社华章分社编辑陈冀康先生的邀请、信任和协作。感谢为本书的出版付出台前幕后贡献的所有其他工作人员。感谢朱艳和荣坤

前言回到顶部↑

拿起本书,你很可能正在揣摩这本书是否有助于你学习C++。为了做出选择,你需要知道本书将会讲些什么内容,以及怎样不同于堆积在书商书架的其他许多书。我并没打算宣称本书独一无二地优于所有其他类似书籍,但我敢说除了技术精确之外,本书在其他方面也与众不同。.
第一个问题:你已经能够使用某种程序语言编程了吗?如果你的答案是不能,那么几乎可以肯定,本书并非一本适合你起步的书籍。你可能需要某些其他的书,例如我的《You Can Do It!》[Glassborow 2004]。然而,如果你已经了解,诸如循环、判断语句,以及函数等概念,那么请继续阅读本书。
我尽可能少地限定读者需要知道的编程知识,特别是,我不要求读者已经了解C语言的编程知识。如果事实上你已经熟悉C语言,那么请你准备好学习以不同的方式做事情。虽然“C++”这个名字暗示着用C++能够超过C,并且几乎所有的C也都是C++,但是优秀的C程序通常并不是优秀的C++程序。两种语言共享一个公共核心,但二者的差异导致了迥异的编程风格。
我将为你介绍用C++进行编程,这会用到过去20年中发展起来的所有现代惯用法和工具。出于这个原因,本书使用高层特性介绍C++,仅当确有所需要时才会讨论其低层特性。
本书的目的是使你牢固掌握标准C++的基础知识。为了加深理解,你需要动手编写程序。因此,你可以尝试更富有冒险性的程序。我以自己的库补充了C++标准库,我的库提供了以下四项基本的附加功能:
·一些简单工具函数(utility function),使得从一开始就更容易编写出正确的程序。它们用纯粹的标准 C++写成,因此可以被移植到所有标准 C++实现。
·一个可以从纯控制台程序(以纯文本形式运行的程序)中控制的非常原始的图形窗口。它可以一致地运行在基于Windows和Linux的PC之上(以及在OS X版本的Apple Mac之上)。
·一个“一键鼠标”(也就是对所有按钮一视同仁的鼠标)。最大的好处是,该鼠标不具有因为处理多个按钮、滚轮等而产生的复杂性。
·直接键盘读取,于是你的程序就可以直接监测键盘按键。这一小特性戏剧性地扩展了你所能编写的程序的种类。
注意,我提供这四项功能是为了使学习C++的过程更为愉快,与没有它们的情况相比较,你可以编写出更广泛的程序。(如果你愿意,你甚至可以编写出某个经典的控制台游戏,例如Space Invaders)。在本书的大部分内容中,我都避免显式地使用我的库,但你应该可以自由地使用它,既可以用来增强针对所提供的练习的解决方案,也可以添加到你自己的其他练习中去。
除了我自己的工具库以外,本书还附有一款完整的C++编译器(MinGW)以及在两款IDE之间选择的机会。第一款为MinGW Developer Studio,它是用户支持(user-supported)的产品。如果这对你来说是个生词,那么我告诉你,它意味着如果你喜欢某产品并打算继续使用的话,你最好能为该产品的作者捐点款(不论你认为对你而言这是否值得)。Pxviii它不是共享软件,因为不存在限制性许可证来限定在不付费的情况下能使用什么功能。它也不是免费软件,免费软件从来就不期望你付给谁一分钱(MinGW本身是一个杰出的免费软件产品的榜样)。那么,请登录产品的网站并捐款,以表示你对一个构造优良的工具的感激之情。
第二个可供选择的IDE是更复杂但高度可移植的JGraspTM,它来自奥本大学(Auburn University)。它用Java写成,因此你需要一个适当的Java运行时环境。这款IDE为教学目的而编写。它拥有许多卓越的功能以帮助新手探索自己所写的代码。它对个人免费,但是不能作为商业产品的一部分分发。包含在本书光盘中的许可证是教育性书籍专用的。JGrasp接受许多C++编译器(包括MinGW在内)作为插件程序。
这些IDE既可以运行于微软Windows之上,也可以运行在Linux系统上。实际上,JGrasp能够在支持Java的任何系统上运行,但就本书而言,仅限于那些能实现我的库的系统。在本书写作期间,这些系统包括Windows 95之后所有版本的Windows和Linux(以及我前面说过的Apple Mac上的OS X)。
本书的正文部分假定你使用的是以MinGW作为编译器的MinGW Developer Studio。该工具免费提供于随书光盘中,它是职业程序员通常使用的重量级的专业工具。你也可能希望使用其他一些工具集(toolset),不过在此之前你需要检查网站(http://www.spellen.org/youcandoit/),看看我是否针对那套工具提供了一份库的副本。遗憾的是,C++的局限性之一是分发的库常常特定于编译器,这就意味着,如果你使用的是一款不同的编译器,就得重新编译库。
我将本书设计为一本可当作参考书来使用的书。举个例子,当我介绍C++内建类型(built-in type)的时候,学习文块(study text)将只使用到可用类型的一个子集。而在该章的末尾,你会发现一个关于所有内建类型以及其派生物的整合集。该整合集被放置于靠近你初次学习C++类型系统的地方(而不是作为附录存在),它提供了集中于一处的参考,以便你查阅。初次学习那一章时,你可能会跳过参考部分,但在稍后某个阶段你也许希望深入阅读其中某个主题,或方便地查阅什么东西。
总结一下,本书教你使用标准C++以现代惯用风格进行编程。为使学习的过程更令人愉快,我提供了一些对C++库的扩展,最起码可以在微软Windows(98及后续版本)和Linux之间移植。本书带有你阅读和学习所需要的每样东西,就缺一台电脑和操作系统了——那是你必须自行准备的。除了一些扩展支持(图形、声音、鼠标以及直接键盘读取)外,本书中其他所有东西都可以移植到任何安装了标准C++编译器的计算机上。
学习C++
有时候环境迫使我们通过自学获得新技能。这条路常常很难走,而且有时候会妨碍我们的进展。如果你想要学习演奏一种乐器,你需要自己练习,但花时间与其他人一起练习也是不可或缺的。否则,你会养成不良习惯,这将严重地妨碍你将来的进步,不利于同他人一起制作音乐。同样的道理也适用于学习计算机语言编程。你很容易就会将自己第一门语言的惯用法强加到你正在学习的新语言(C++)上。如果缺乏与他人协作的训练,你对C++这种不正确的使用不会暴露出来。若你的第一门语言是C++的近亲(例如C、C#或Java),情况尤其如此。仅仅学习语言的语法是远远不够的,你还需要学习应当如何使用该语法。
在上学时,我从一本书中学会了围棋。我向几个小伙伴传授规则,并在一个自制的木板上玩此游戏。许多年后,我遇见某人,他曾跟一名经验丰富的棋手学过围棋。起初几盘,对我们而言都很有意思,因为我对战术和战略的理解和运用是完全随意的。有些地方我玩得相对合理,而在其他地方我又犯新手的错误。千万别让你的C++也变成那样。
你最好寻找一个学习伙伴和一位导师。前者会在语言上为你提供一个可供参考的观点;后者将帮助你形成有效透彻的理解。通过与老手交流,可确保你弄清楚事物的运作机理。警惕那些自封的专家。与我早期学习围棋知识一样,他们的知识可能毫无章法。访问下面这些有益的地方,阅读并提问:

序言回到顶部↑

我的前一本书《You Can Do It!》专为完全的编程初学者而写。那本书的读者应具备使用基于微软Windows计算机访问Internet的一般水平,除此之外,我假定他们没有任何其他预备知识和技能。对于那些已经具有使用某种语言进行编程实践经验的人来说,那本书似乎没有多大意义。之所以选择C++,是因为我确信,只要使用一个经过慎重选择的子集,辅以一个我自己设计的基于标准库的扩展库(这个库使得初学者能够编写出有趣的程序),就一定可以达到预期目标。那本书的首要目标是教授合理有效的编程。.
本书打算供完全不同的读者群体使用:已经拥有不错的编程基础的读者。当然,基础不同的人在学习C++过程中的期望和问题也不同。C++的亮点之一是它能够处理大多数主要语言群体的编程范型(paradigm)。如果你的第一门语言是Lisp,并且你能够用它表述问题,则C++将使你进行许多思想上的重新调整。但是,在关于如何将问题的解决方案用源代码表达出来这方面,只要你有着开放性的思维,那么拥有许多其他语言背景能够为你从其他语言转到C++语言奠定良好的基础。
我不打算对整个C++进行全方位的讨论:这门语言太庞大了,以至于实在做不到这一点。我没有试图为你展现C++的所有方式:它是一门甚为丰富的语言,不可能在一本书中做到这一点。说实话,我认为没有任何一位作家能够完全涵盖C++的所有方式。..
我的目标是,为读者提供一份对C++的合理介绍,即介绍它的一个规模适当的工作子集。其间,我将讲解如何使用C++来处理形形色色的编程问题。
你投入了多少精力去阅读(或更恰当的说法是去学习)本书,你就会从中获得多少回报。我不赞成提供琐细的、充当工作量的练习。你应该有能力为自己提供那些练习,无需我提供任何帮助。这就意味着,做本书中的练习和实验,以及积极地尝试正文中的代码,都是成功阅读本书不可或缺的因素。
如果你希望尝试C++并已具备编程基础知识,那本书正是为你而写。我希望你尽情享受学习的过程,并在学习结束时能够感受到继续前进的动力,因为C++是可利用的、最具挑战性的编程语言,它不会限制你能够做什么或如何去做。这是C++与所有其他流行的计算机编程语言的区别之一。
倘若可以征服C++,你将成为编程的主人,在需要时能够迅速适应其他语言。 ...
Francis Glassborow
2005年7月29日

评论交流

共有8人开贴评论  11人参与评论  7人参与打分 查看

4人
 57%
用户平均打分
我要写评论 help如何参与评论和打分
2人
 28%
1人
 14%
0人
 0%
0人
 0%

wjp2013
二级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-2-6 15:11:00
啥也不说了,入门的好书啊。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

intruderlx

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-12-23 21:38:00
是You Can Do It——C++编程新手互动教程的进阶版,对于新手很有帮助。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

zhy_yn
一级评论员
  
发表于:2008-12-3 23:46:00
《C 编程你也行》给我的光盘与书不配套,为什么?
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

yyjsir

一级评论员
评价等级:  
发表于:2008-5-15 17:23:00
正在看中,,,目前来说还是说得不错的,纠正了一些观点
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

axecm

一级评论员
评价等级:  
发表于:2007-7-6 16:35:00
不知道跟那本you can do it是不是一本?
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共8条)