这是初学者学习标准C++的一本理想书籍。本书的写作体例非常有特色,其内容以初学者(一个聪明的女孩,苏珊)提出问题、编程高手(本书的作者,史狄夫)回答问题的形式为主线进行组织,知识讲解和概念分析非常适合初学者的思维。而且,这里的对话都是真实对话的记录,对话中的男女主人公演绎了一段动人的爱情故事,现在他们建立了一个幸福的家庭。本书以对话的方式,逐步深入地讲解C++编程中的概念和技巧,特别讲述初学者容易混淆的概念,使得初学者可以快速掌握C++的开发技巧。本书首先介绍最基本的编程概念,让初学者解除编程的神秘面纱并知道如何进行编程,然后介绍编程的基础知识,通过开发几个比较实用的例子来介绍如何使用C++语言进行编程,这几个例子分别是:商店的库存管理、创建自定义的string类以及家庭物品清单项目。通过这些例子,读者可以确切地理解专业程序设计人员是如何开发一个完整的应用程序并部署于实际环境的。贯穿本书,作者介绍了C++的一些重要语言特征,如类、标准类库、数组、指针、封装、继承、多态性、枚举和名字空间等。与一般的初学者用书不同,本书使用的是符合产业标准的代码,读者可以学习到最新、最实用的语法和标准C++开发工具。附带光盘中含有所有的示例代码和标准C++编译器,方便读者的学习。前言大多数科技书所存在的基本问题是作者太想当然。一个人一旦成为高科技领域(如C++编程)的专家,他往往就不知道如何与正在努力奋斗的新手沟通。还有一点必须说明:大部分科技人员并不是很好的作者。幸运的是,程序设计员中10%最顶尖的人有望成为很好的作者——我的老朋友SteveHeller就是这两方面的高手。他非常聪明,知道自己不能够像编程新手一样考虑问题,所以他向新手寻求帮助。现在你手中拿的这本书不仅非常巧妙,而且具有特殊的、意想不到的魅力,这使它成为我所见过的最出色的科技书之一。这是因为,史狄夫所找到的写作伙伴具有与他一样的智慧,而且她对这方面知识的渴望和一无所知成了史狄夫的熟练技能的完美补充。本书不但是史狄夫和苏珊共同写作的书本的选集,而且还是两种非凡智慧结合到一起的故事。他们连贯的对话使本书更为亲切,而这正是大多数科技指南所没有的。他们都从对方那里得到了最有价值的收获,史狄夫让苏珊不断思考、学习并进步,而苏珊使史狄夫从高度抽象的世界回归到日常经历的实例和模拟。对话的结果是用两个声音将许多主题交织在一起的优美乐章。史狄夫揭开了C++的神秘性,而苏珊不断学习该语言,这两者结合在一起。他们一起研究计算机的内部世界时,不但学到了字节和硅等内容,而且他们相互之间产生了不断增长的好感和关怀。苏珊学到了她所不知道的知识,而史狄夫进行了复习——多么令人愉悦的经历。有多少编程入门书也是爱情故事?这可能是惟一的。我不强求大家效仿,但我要说的是,史狄夫和苏珊之间的关系所产生的著作不仅仅是顶级的技术指导书,而且是精妙的艺术。认识他俩是我的荣幸,而介绍这本书更是我的荣耀。我希望他们发现问题、解决问题的过程能在各位的学习过程中起到指导作用。EricS.Raymond序言本书是否适合你?如果你是其他计算机语言(非C++语言)的程序员,而想提高自己的能力,那么只要读几页就可以毫不费力地得出结论。那么,对于没有编程经验的新手又如何呢?在这种情况下,下面给出的一些测验可能会对大家有所帮助:1.是否想知道计算机程序内部是如何工作的以及如何编写自己的程序?2.是否愿意尽全力学习一门复杂的技术科目?3.是否有幽默感?如果所有答案都是肯定的并且能够坚持到底,那么你将能够从中学到很多知识。常识认为,编程是少数专业人员所做的困难工作。我写这本书的主要原因之一是,我认为这种态度是错误的,让大家了解程序如何运行以及如何编程是可能的,而且甚至是合乎需要的。对于那些不知道计算机是如何执行那些看起来很神秘的工作的人,他们在越来越依赖于这些非凡机器的社会中,将越来越处于不利地位。除了话题之外,我看不出一本书枯燥乏味的任何正当原因。而且,我已经尽我所能使此书浅显易懂。不过,不要因此就觉得该学科很简单:编程没有捷径可走,它比几何学更为烦琐。尤其是对于没有编程经验的人,C++比实际中其他任何研究领域更能拓宽你的思维。想要学习C++,那为什么要选择这本书而不是其他数不胜数的C++入门书呢?本书与其他入门书的一个不同点是,其他书中有许多仍没有使用C++标准类库①,这是C++语言定义中非常重要的一部分。本书将使用一些标准类库的功能,以便于读者开始了解C++语言中这一重要部分。当然,本书没有包含其全部内容,这将需要更多的空间。实际上介绍标准类库的书有许多,不过我不清楚哪些适合编程新手。有一个因素使得本书是独一无二的:一个真实的、活生生的人的参与,她在读这份材料之前什么都不知道,她就是我的妻子苏珊②。她的主要贡献就是从初稿开始认真阅读书中每一行,并通过E-mail对她所不理解的内容进行提问。我同样通过E-mail回答她的问题,直到我俩都满意——她理解了问题而材料文本变得清晰为止。文本完成之后,我抽出部分合适的E-mail信件,对它们进行编辑,检查其拼写和标点符号等,然后将它们加入到文本中最合适的地方。对本书的这个最新版本,我们讨论了由标准类库的应用而引起的改变。作为讨论的结果,我对现有的E-mail信件进行了适当地添加和修改,以使它们在变化的环境中讲得通。不过,苏珊对这些信件中有关她的内容做最终决定,这样,它们仍是真实的对话。当然,这些对话的确占了一定的篇幅,或许因此而减少了一些有关C++和编程的信息。因此,如果想从书本的每一页上获得最大量的新信息,那么或许该选择其他书,如BjarneStroustrup所编写的优秀的“TheC++ProgrammingLanguage”(ISBN0-201-88954-4),或者由AndrewKoenig和BarbaraMoo所著的“AcceleratedC++”(ISBN0-201-70353-X)。但是,从我的其他书本的读者所获得的绝大部分评论都表明:他们认为我这种方式很有帮助,我猜想你们也会有此感觉。在这个序的后面,苏珊写了关于她加入此工程的叙述。我建议大家在开始学习后面的内容之前先阅读此叙述,因为这里说明了她是如何以及为什么致力于使你的工作更简单而更有趣。说到苏珊,下面有一小段关于如何学习本书的对话,这段对话是在她首次学习本书第2章和第3章时进行的。苏珊:让我说,要觉得真正了解了它,我真的需要再研究两遍。现在我可以这么做,但是我不知道你是否希望我这么做。我想:对大多数人来说,每章读一遍就够了。史狄夫:事实上,我希望读者有必要的话对这些章节多读几遍;对于编程新手,我认为这是必要的。编程是最复杂的人类学科之一,尽管它不需要学科的数学能力,如核物理学①。我努力使我的解释尽可能简单,但不进行大量的工作和思考是不可能学好编程(或其他复杂学科)的。她完成文本的多遍阅读并从中学到更多知识之后,我们继续下面的讨论:苏珊:或许这点应该在序言或其他位置指出。当然,最终读者将同我一样明白这点,不过我花了不少时间才得出此结论。如果事先知道这一点,那么,或许我不会因为读完一遍后不明白而气馁。史狄夫:我在序言中真正要讲的是,读者不要因此而认为这如同在公园里散步一样简单。无论如何,请不要气馁。我认为你已经在没有任何专业背景的情况下学到了许多非常专业的知识,这是值得骄傲的!在本书中,我们将多次听到苏珊的心声。在本书的测试和修订过程中,我们通过E-mail进行讨论,她的话将被频繁地摘录出来。我希望她的意见和我的回答将对你学习此技术材料有所帮助。言归正传,该告诉读者在本书中发现错误或遇到其他问题时如何获得更新和帮助了。最好的方法是访问我的站点:steveheller.com,我的E-mail地址是steve@steveheller.com。如果你喜欢这本书并想要告诉其他人,那么你可能想在Amazon.com上撰写在线评论——可以通过访问我的主页进行,也可以沿着“用户评论”链接到Amazon上。请注意,对于“classes”(类)和其他C++术语的复数,我都用统一的等宽字体,而不是在复数词尾用普通字体,如“classes”,这是因为,我认为在一个单词中用不同的字体容易分散注意力。在C++中没有复数术语,知道这一点就不会出现将“classes”当做C++术语的错误,实际上此术语是“class”。如果出现这种错误,那么将很快就会发现,因为在程序中错误使用术语时将得到出错消息。下面是来自我的试读者苏珊的心声。我希望大家从她的参与中得到的收获能和我一样多。致谢