﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-on</title><link>http://www.cppblog.com/ontheway/</link><description>sf</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:08:35 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:08:35 GMT</pubDate><ttl>60</ttl><item><title>C/C++巨著</title><link>http://www.cppblog.com/ontheway/archive/2008/09/07/fsf.html</link><dc:creator>zhoujiatai</dc:creator><author>zhoujiatai</author><pubDate>Sun, 07 Sep 2008 13:26:00 GMT</pubDate><guid>http://www.cppblog.com/ontheway/archive/2008/09/07/fsf.html</guid><wfw:comment>http://www.cppblog.com/ontheway/comments/61256.html</wfw:comment><comments>http://www.cppblog.com/ontheway/archive/2008/09/07/fsf.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/ontheway/comments/commentRss/61256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ontheway/services/trackbacks/61256.html</trackback:ping><description><![CDATA[<p>　　这几本让读者和我在期待的C/C++巨著就是这期我要推荐的——《Essential C++中文版》、《Effective C++中文版》、《The C++ Programming Language》和《C++ Primer》。 </p>
<p>　　Essential C++（Addison Wesley Pub Co.，1999年10月第一版）的作者Stanley B.Lippman更是C++领域一流的大师级人物，他从1984年开始就与C++结下了不解之缘：参与了第一个C++编译器C Front的开发，曾经和C++之父Bjarne Stroustrup（详见下）一起在贝尔实验室的项目组工作、负责研究C++程序开发环境中的对象模型，后来又担任著名的C++Report杂志编辑，此后他到迪斯尼旗下的梦工厂出任软件技术总监（Software Technology Director），主要著述有Essential C++、C++Primer、C++Gems、Inside the C++ Object Model、C＃Primer等，关于作者的更详细信息可以到其个人网站（<a href="http://www.objectwrite.com/"><u><font color=#0000ff>http://www.objectwrite.com</font></u></a>，该网址笔者已验证无误）查询。Lippman当前在业界的影响力可以从最近发生的一件事情看出：不久前微软已经邀请了C++编程语言的先驱Stanley B.Lippman加盟它的Visual C++.Net开发小组，以打消广大的C++编程人员的疑虑。Essential C++是Lippman在C++ Primer之后的著作，可以说是厚积薄发的精髓之作。不要想当然地觉得这本书只有276页就是烹小鲜的入门向导——其实，我到觉得如果想通过一本书入门，1237页的C++ Primer或1109页的The C++ Programming Language更加适合。Essential C++分为7个章节，分别是C++基础、面向过程的编程风格、泛型编程风格、基于对象的编程风格、面向对象的编程风格、运用模板编程和异常处理。从结构的安排上我们可以看出作者的深意所在：并不是要手把手地教你键入和编译调试一个类似&#8220;Hello World&#8221;的程序，而是要一步一步地教会读者通过函数、指针、模板、类等构件形成一套完整的编程思想，在不同的需求情况下能够自如地使用面向过程或面向对象的方法进行程序设计，正如Bjarne Stroustrup在The C++ Programming Language一书中引用Kristen Nygaard（Simula语言的两位创造者之一）所说的&#8220;Programming is understanding&#8221;。如果你是一个新手，在阅读本书的时候不要忘了找一本更详细一些的参考教材——作者只用了30页的篇幅讲C++变成的基础知识，这里面还包括了数组、向量和指针等内容，《Essential C++中文版》（华中科技大学出版社，2001年8月第一版）已经出版，是侯捷的译著——恐怕业内很少有人不知道这位台湾大名鼎鼎电脑教育作家，建立在深刻理解基础上的翻译质量几乎可以说是无可挑剔了，但对于一些词汇的翻译方法和大陆翻译习惯的差异还有待磨合和改进（虽然译者坚持保留其繁体版译法）。 </p>
<p>　　Effective C++（Addison Wesley Pub Co.，1997年9月第二版）没有教你C++语法或函数、对象、模板之类的东西，这是一本风格独到的经典技巧集，曾经获得过1992年度Jolt Award and Productivity Awards，作者教给你的是50个&#8220;改善程序技术与设计思维&#8221;的特别途径。Scott Meyers是C++业界公认的权威，主要从事软件开发咨询工作，活跃在全球各技术研讨会上，同时是C++ Report的重要专栏作家，知名著述出了Effective C++之外还有More Effective C++和Effective STL等，关于作者的更详细信息可以到其个人网站（<a href="http://www.aristeia.com/"><u><font color=#0000ff>http://www.aristeia.com</font></u></a>）查询。《Effective C++中文版》（华中科技大学出版社，2001年9月第一版）也已经在国内翻译出版，译者还是侯捷。当你初步了解C++的全貌之后，Effective C++能够在短时间内大幅度地提高你C++编程的水平，此书的独特之处在于每一个你遇到的C++问题，Meyers都好像未卜先知地放在了书里，所有让你困惑的问题你几乎都可以在这本书中找到精辟的论述——如果能加Meyers的另一本巨著More Effective C++（Addison Wesley Pub Co.，1995年12月第一版）将更会锦上添花。本书在结构上分为改变旧有的C习惯、内存管理、构造析构函数与作业运算符、类与函数的设计和声明、类与函数的实现、继承关系与面向对象设计以及杂项讨论7个部分。很多人都认为你越熟悉C语言或其他面向过程的语言，在学习面向对象的语言的时候就会面临更大的困难，的确，如果你已经习惯了面向过程，在面向对象的时候你还是无法忘记过程，为此，Meyers在第一部分就提出了改变旧有的C习惯，通过几个小技巧让你能够尽量不受原有知识对新知识学习的干扰。在接下来的3个部分中，作者又针对让人头疼的内存管理问题（Java就宣称采用自动内存管理减少了编程复杂程度和出错几率是比C++的一大进步），随后，作者针对函数与类的构造析构、设计、实现等问题进行了详实的讨论，没有枯燥的长篇大论，都是结合实例的分析讲解——如果你刚学C++不久但已经可以独立编写一些简单的程序，你会发现所有被批判的问题程序中都可以找到自己的影子，这真是一件奇妙的事情！在&#8220;继承关系与面向对象设计&#8221;部分里作者没有喋喋不休地去讨论尚有争议的问题，而是把精力放在最基础的理念上，澄清了C++中类的继承体系设计与实现，并结合继承问题阐释了OOP。&#8220;杂项讨论&#8221;中作者主要讨论了编译、标准库等问题。打一个粗俗些的比方：Effec tiv e C++和M o re Effec tiv e C++就像是C++学习者的手挠，每一下都抓在你的痒处。<br><br><br><br><br></p>
<p>　　The C++ Programming Language（Addison Wesley Pub Co.，2000年2月第三版，高等教育出版社，2001年8月影印版）是无论哪一个C++学习者绝对、绝对不能错过的头号经典。Rogue Wave公司（Boland C++ Builder中STL方案的提供商）的Nathan Myers说：&#8220;15年之后，此书仍然是唯一一本无可替代的C++书籍。&#8221;只要有人推荐C++书籍，此书必在其中。正如侯捷先生1999年C++Primer繁体版前言中评价所说：&#8220;C++/OOP的领域极广&#8230;&#8230;，不同的切入角度，都存在不同的经典好书。但如果考量的是语言全貌性（百科型）书籍，从来我只推荐两本，一是Bjarne Stroustrup的The C++ Programming Language，另一是Stanley B.Lippman的C++ Primer。这么说难免遗珠之憾，但是泰山北斗已现，又何必案牍劳形于墨瀚书海之中！这两本书都从C++盘古开天以来，一路改版，斩将搴旗，追奔逐北，成就一身荣光&#8221;。作者Bjarne Stroustrup是贝尔实验室大规模程序设计研究部门（Large-Scale Programming Research Department）负责人，AT&amp;T、ACM成员，主要著述有The C++ Programm ing Language、The Design and Evolution of C++、The Annota ted C++ Reference Manual、C++ In-Depth Box Set（与别人合著）等。1979年Stroustrup开始开发一种语言，当时称为&#8220;C with Class&#8221;，后来演化为C++，并于1995年在贝尔实验室研制成功并投入使用的，Stro u strup也被称为&#8220;C++之父&#8221;，关于作者的更详细信息可以到其个人网站（<a href="http://www.research.att.com/~bs/homepage.html">http://www.research.att.com/~bs/homepage.html</a>）查询。1998年，ANSI/ISOC++标准建立，同年，Strousturp推出了其经典著作The C++Programming Language的第三版。The C++Programming Language可是说非常全面、权威，充满了技术性极强的材料，很多地方值得反复回味与思索。Stroustrup说，他所接触和开发的软件无论是在大小、复杂性和难度来说，根本不是外界一般软件所能比拟的。本书虽然是一本计算机编程语言教程，但是处处体现出他对于软件开发和程序设计的看法。所以他在书中的很多观点虽然看上去不觉得有什么了不起的地方，但是当你面临到真正挑战的时候，就会深刻体会到其真知灼见非同一般。即便我们不考虑语言的障碍，这本书仍然比较难懂，作者很多地方点到即止，其中深意不是初学者能够真正领会的。这本书有个绰号——C++专家自学指南，也就是你必须先是专家，然后再来读此书自学提高。 </p>
<p>　　C++ Primer是Lippman的成名大作——不要看到这个名字就真认为这是&#8220;C++的初级读本&#8221;，实际上它是一本标准的&#8220;从入门到精通&#8221;教材，目前该书的简体中文版还没有上市，我到处寻找其英文版也没能如愿，一个偶然的机会在朋友那里看到了侯捷（见上关于此书的评价）繁体中文版的C++Primer，大体翻看了一下，感觉此书在实例方面非常详尽，内容可谓是全面、权威，通俗易懂。初学者只要能够认真学通这本书，足以能自由使用C++编写程序，成为C++的高手。C++ Primer对标准C++提供了广泛的介绍，提供了一个思考性的C++学习方案，C++中的重要该概念诸如异常处理、容器类型、面向对象的程序设计等等都体现在字里行间，对语言规则也进行了深入地探讨，是一本非常好的入门也是提高的教程和参考。全书共分为20章，从C++最基本的元素、数据类型到面向过程的程序设计到泛型算法到基于对象与面向对象的程序设计等等，洋洋洒洒，蔚为大观。此书将由中国电力出版社近期推出简体中文版，由潘爱民（《COM原理与应用》的作者，《Visual C++技术内幕（第四版）》、《深入理解COM+》、《COM本质论》、《深入解析ATL》的译者）主译。 </p>
<p>　　在国内，ISO/ANSIC/C++长期被忽视，很多软件公司的招聘广告上写的都是要求熟悉Visual C++或C++Builder——它们简直就成了C/C++的代名词！但ISO/ANSIC/C++有其不可替代的重要性，特别是在软件移植方面，记得我蓝格软件公司的董事长林燕峰先生（KCOM Space的作者）曾经和我说过要保证软件开发的可移植性和开发的可协作管理就必须遵从业界标准。值得庆幸的是今年出版界对标准C/C++书籍的渴求终于重视起来，纷纷出版经典C/C++书籍。关于C/C++的&#8220;不学C，无以言&#8221;到此已经结束，但并不是说已经囊括了C/C++的全部经典书籍，像Exceptional C++（Herb Sutter著，Addison Wesley Pub Co.，1999年12月第一版）、《实用C语言编程》（Steve Oualli著，O Reilly &amp; Associates，1997年9月第三版，中国电力出版社，2000年5月中文第三版）、《C/C++嵌入式系统编程》（Michael Barr著，O Reilly &amp; Associates，1999年2月第一版，中国电力出版社，2001年3月中文第一版）等等，或因不得见其书、或因技术领域太过专细，皆成明代遗贤。<br></p>
<img src ="http://www.cppblog.com/ontheway/aggbug/61256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ontheway/" target="_blank">zhoujiatai</a> 2008-09-07 21:26 <a href="http://www.cppblog.com/ontheway/archive/2008/09/07/fsf.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA和C++区别[转载] </title><link>http://www.cppblog.com/ontheway/archive/2008/09/07/fd.html</link><dc:creator>zhoujiatai</dc:creator><author>zhoujiatai</author><pubDate>Sun, 07 Sep 2008 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/ontheway/archive/2008/09/07/fd.html</guid><wfw:comment>http://www.cppblog.com/ontheway/comments/61255.html</wfw:comment><comments>http://www.cppblog.com/ontheway/archive/2008/09/07/fd.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/ontheway/comments/commentRss/61255.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ontheway/services/trackbacks/61255.html</trackback:ping><description><![CDATA[<table cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
    <tbody>
        <tr>
            <td width="4%"></td>
            <td style="OVERFLOW-X: auto; TEXT-INDENT: 25px; TEXT-ALIGN: left" align=middle width=*>
            <div class=blog_item_content id=_$p_blog_content>
            <p>1．指针 </p>
            <p>&nbsp;<br>JAVA语言让编程者无法找到指针来直接访问内存无指针，并且增添了自动的内存管理功能，从而有效地防止了c／c++语言中指针操作失误，如野指针所造成的系统崩溃。但也不是说JAVA没有指针，虚拟机内部还是使用了指针，只是外人不得使用而已。这有利于Java程序的安全。 </p>
            <p>2．多重继承 </p>
            <p>c++支持多重继承，这是c++的一个特征，它允许多父类派生一个类。尽管多重继承功能很强，但使用复杂，而且会引起许多麻烦，编译程序实现它也很不容易。Java不支持多重继承，但允许一个类继承多个接口(extends+implement)，实现了c++多重继承的功能，又避免了c++中的多重继承实现方式带来的诸多不便。 </p>
            <p>3．数据类型及类 </p>
            <p>Java是完全面向对象的语言，所有函数和变量部必须是类的一部分。除了基本数据类型之外，其余的都作为类对象，包括数组。对象将数据和方法结合起来，把它们封装在类中，这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外，Java中取消了c／c++中的结构和联合，消除了不必要的麻烦。 </p>
            <p>4．自动内存管理 </p>
            <p>Java程序中所有的对象都是用new操作符建立在内存堆栈上，这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象，然后调用该对象的work方法： </p>
            <p>Read r＝new Read()； </p>
            <p>r.work()；</p>
            <p>&nbsp;</p>
            <p>语句Read r＝new Read()；在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作，不需要程序员进行删除。而c十十中必须由程序贝释放内存资源，增加了程序设计者的负扔。Java中当一个对象不被再用到时，无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的，利用空闲时间工作。 </p>
            <p>5．操作符重载 </p>
            <p>Java不支持操作符重载。操作符重载被认为是c十十的突出特征，在Java中虽然类大体上可以实现这样的功能，但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。 </p>
            <p>6．预处理功能 </p>
            <p>Java不支持预处理功能。c／c十十在编译过程中都有一个预编泽阶段，即众所周知的预处理器。预处理器为开发人员提供了方便，但增加丁编译的复杂性。JAVA虚拟机没有预处理器，但它提供的引入语句(import)与c十十预处理器的功能类似。 </p>
            <p>7. Java不支持缺省函数参数，而c十十支持 </p>
            <p>在c中，代码组织在函数中，函数可以访问程序的全局变量。c十十增加了类，提供了类算法，该算法是与类相连的函数，c十十类方法与Java类方法十分相似，然而，由于c十十仍然支持c，所以不能阻止c十十开发人员使用函数，结果函数和方法混合使用使得程序比较混乱。 </p>
            <p>Java没有函数，作为一个比c十十更纯的面向对象的语言，Java强迫开发人员把所有例行程序包括在类中，事实上，用方法实现例行程序可激励开发人员更好地组织编码。 </p>
            <p>8 字符串 </p>
            <p>c和c十十不支持字符串变量，在c和c十十程序中使用Null终止符代表字符串的结束，在Java中字符串是用类对象(strinR和stringBuffer)来实现的，这些类对象是Java语言的核心，用类对象实现字符串有以下几个优点： </p>
            <p>(1)在整个系统中建立字符串和访问字符串元素的方法是一致的； </p>
            <p>(2)J3阳字符串类是作为Java语言的一部分定义的，而不是作为外加的延伸部分； </p>
            <p>(3)Java字符串执行运行时检空，可帮助排除一些运行时发生的错误； </p>
            <p>(4)可对字符串用&#8220;十&#8221;进行连接操作。 </p>
            <p>9&#8220;goto语句 </p>
            <p>&#8220;可怕&#8221;的goto语句是c和c++的&#8220;遗物&#8221;，它是该语言技术上的合法部分，引用goto语句引起了程序结构的混乱，不易理解，goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由，Java不提供goto语句，它虽然指定goto作为关键字，但不支持它的使用，使程序简洁易读。 </p>
            <p>l0．类型转换 </p>
            <p>在c和c十十中有时出现数据类型的隐含转换，这就涉及了自动强制类型转换问题。例如，在c十十中可将一浮点值赋予整型变量，并去掉其尾数。Java不支持c十十中的自动强制类型转换，如果需要，必须由程序显式进行强制类型转换。 </p>
            <p>11.异常 </p>
            <p>JAVA中的异常机制用于捕获例外事件，增强系统容错能力 </p>
            <p>try{／／可能产生例外的代码 </p>
            <p>}catch(exceptionType name){ </p>
            <p>//处理 </p>
            <p>}</p>
            <p>其中exceptionType表示异常类型。而C++则没有如此方便的机制。</p>
            <p>&nbsp;</p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cppblog.com/ontheway/aggbug/61255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ontheway/" target="_blank">zhoujiatai</a> 2008-09-07 21:24 <a href="http://www.cppblog.com/ontheway/archive/2008/09/07/fd.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  如何成为一名C++程序员</title><link>http://www.cppblog.com/ontheway/archive/2008/09/07/ds.html</link><dc:creator>zhoujiatai</dc:creator><author>zhoujiatai</author><pubDate>Sun, 07 Sep 2008 13:19:00 GMT</pubDate><guid>http://www.cppblog.com/ontheway/archive/2008/09/07/ds.html</guid><wfw:comment>http://www.cppblog.com/ontheway/comments/61254.html</wfw:comment><comments>http://www.cppblog.com/ontheway/archive/2008/09/07/ds.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/ontheway/comments/commentRss/61254.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ontheway/services/trackbacks/61254.html</trackback:ping><description><![CDATA[<font color=#006400>&nbsp;&nbsp;如何成为一名C++程序员<br>入门<br>《&nbsp;C程序设计语言(第2版)&nbsp;》为以后的编程学习打下一个扎实的基础<br><br>提高<br><br>C++在熟悉一门语言后，一定要认真学习的就是数据结构<br>提高<br>的水平，可以选择《&nbsp;C++编程思想&nbsp;》，然后再看《&nbsp;Effective&nbsp;C++中文版&nbsp;2nd&nbsp;Edition&nbsp;》和《&nbsp;More&nbsp;Effective&nbsp;C++中文版&nbsp;》，<br><br>再提高<br>，《C语言程序设计》（或者你看的第一本编程书）中的思路潜在的影响着我们。这条鸿沟就由《&nbsp;设计模式--可复用面向对象软件的基础&nbsp;》来补救吧！所谓模式就是前人总结出来的&#8217;&#8217;<br><br>看了《&nbsp;设计模式--可复用面向对象软件的基础&nbsp;》后，有时间不妨看看《&nbsp;重构--改善既有代码的设计（中文版）&nbsp;》，学了面向对象的设计思想后看它<br><br>结束语：<br><br>　　在学习编程的过程中一定要注意多实践！学习时到专业论坛同大家讨论是个不错的办法，你会找到许多热心的朋友与您一起学习，能通过学习编程交些朋友不是更好</font>
<img src ="http://www.cppblog.com/ontheway/aggbug/61254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ontheway/" target="_blank">zhoujiatai</a> 2008-09-07 21:19 <a href="http://www.cppblog.com/ontheway/archive/2008/09/07/ds.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>