﻿<?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++博客-激情飞扬-随笔分类-Be your personal best </title><link>http://www.cppblog.com/rhythm-xzy/category/215.html</link><description>            ————活着的人要思考，让行为本身产生的能量更值得！！</description><language>zh-cn</language><lastBuildDate>Sat, 24 May 2008 16:29:10 GMT</lastBuildDate><pubDate>Sat, 24 May 2008 16:29:10 GMT</pubDate><ttl>60</ttl><item><title>Bresenham 画线算法 (转载)</title><link>http://www.cppblog.com/rhythm-xzy/archive/2005/11/08/986.html</link><dc:creator>激情飞扬</dc:creator><author>激情飞扬</author><pubDate>Tue, 08 Nov 2005 12:21:00 GMT</pubDate><guid>http://www.cppblog.com/rhythm-xzy/archive/2005/11/08/986.html</guid><wfw:comment>http://www.cppblog.com/rhythm-xzy/comments/986.html</wfw:comment><comments>http://www.cppblog.com/rhythm-xzy/archive/2005/11/08/986.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/rhythm-xzy/comments/commentRss/986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rhythm-xzy/services/trackbacks/986.html</trackback:ping><description><![CDATA[Bresenham 画线算法 
 
  
Bresenham 画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法，该算法仅仅使用了

整数的增量来实现的。

Bresenham算法将对整形参数的符号检测，整形参数的值比于实际险段之间的偏量。

Bresenham算法内容

对于直线方程 Y = kX + b;

A，0< 斜率 < 1 时候的算法

   1,输入线段的两个端点Point1和Point2，并且存储到Point1(x1,y1)和Point2(x2,y2)中；

   2,将Point1载入桢缓存，绘画第一个起始点；

   3,计算常量△x、△y、2△y和2(△y-△x)，并且获得一个决策参数的第一个值：P = 2△y - △x；

   4,从n = 0开始，在沿线经过每个Xn处，进行下面的监测:

        如果Pn< 0, 下一个点绘制的是(Xn+1,yn)，并且Pn+1= Pn + 2△y

        如果P0>= 0 ,下一个点绘制的是(Xn+1,Yn+1)，并且Pn+1 = Pn + 2（△y-△x）

    5,重复执行△x-1次步骤4；

关于在C++中的算法如下实例：

#include <iostream>

using namespace std;

void Bresenham(int x1,int y1,int x2,int y2){

int dx = x2 - x1;//△x 

int dy = y2 - y1;//△y

int p = (2*dy) - dx ; //P = 2△y - △x

int dobDy = 2* dy ; // 2 △y

int dobD = 2*(dy - dx) ; // 2(△y - △x)

int PointX,PointY;

//设置两个临时用来显示位置的变量

 

if( x1 > x2){ //判断线段的方向

PointX = x2;//起始坐标X

PointY = y2;////起始坐标Y

x2 = x1;

}

else{

PointX = x1;//起始坐标X

PointY = y1;//起始坐标Y

}

//达因第一个起始点

cout<<"Point: X:"<<PointX<<" Y:"<<PointY<<endl;

while(PointX<x2){

PointX++;

if(p < 0){

p += dobDy;

}

else{

PointY++;

p += dobD;

}

cout<<"Point: X:"<<PointX<<" Y:"<<PointY<<endl;

}

}

int main(){

//绘画线段(2,2点到(60,50)需要的点

Bresenham(20,10,30,18);

return 0;

}

 

 

B，斜率 k = 1 或这斜率 k = 0 时候的算法

 对于斜率=0或者斜率=1时候，不需要通过算法直接的对于其中单一坐标变量进行处理就可以。

 

C, 斜率 k < 0 的情况算法

将起始点和中止点坐标Point1和Point2交换，可以转化到斜率为0和1之内的算法去实现。

 

参考资料：

<<Computer Graphics with OpenGL Third Edition>> 
 
<img src ="http://www.cppblog.com/rhythm-xzy/aggbug/986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rhythm-xzy/" target="_blank">激情飞扬</a> 2005-11-08 20:21 <a href="http://www.cppblog.com/rhythm-xzy/archive/2005/11/08/986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>迷时师度 悟了自度</title><link>http://www.cppblog.com/rhythm-xzy/archive/2005/11/05/949.html</link><dc:creator>激情飞扬</dc:creator><author>激情飞扬</author><pubDate>Sat, 05 Nov 2005 05:22:00 GMT</pubDate><guid>http://www.cppblog.com/rhythm-xzy/archive/2005/11/05/949.html</guid><wfw:comment>http://www.cppblog.com/rhythm-xzy/comments/949.html</wfw:comment><comments>http://www.cppblog.com/rhythm-xzy/archive/2005/11/05/949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/rhythm-xzy/comments/commentRss/949.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rhythm-xzy/services/trackbacks/949.html</trackback:ping><description><![CDATA[迷时师度 悟了自度
侯捷  1998.04.20 第一次发表于清大.枫挢驿站.电脑书讯 CompBook 版（140.114.87.5）
    元智大学和清华大学的资讯系同学，最近不约而同邀请我在自校的资讯周上为同学们做个演讲。对于那些吊尔郎当，连自己也不关心自己的同学，我向来一点气力都舍不得花；但对于积极上进的同学，我可倒是很喜欢和他们谈话。曾经在不同的学校讲过好些个不同的谈话性题目（非关技术，但都不脱资讯范围），这次有感于在学校任教三年了，颇知道同学们的一些学习情况，所以想和大家谈谈学习的心态、老师的角色、以及学习者自己的角色。
  我想先说一个小故事。
●六祖檀经
    佛教东传中土之后，虽然大德大贤辈出，但由中国和尚所著，被奉为「经」者，也只「六祖檀经」一书而已。
    六祖檀经记录着佛教禅宗六祖惠能一生的思想言行。其中对于六祖得道的过程，有详细的叙述。    六祖惠能俗姓卢，南海新兴人。年少丧父，母且寡居，家亦屡空，业无腴产。所以他从小做了樵夫，养家活口。有一天他偶闻肆间诵金刚般若经，心有所感，於是询问邻人何处学佛，遂安置母亲，至河北黄梅山礼拜五祖。
●五祖弘忍
    五祖弘忍见惠能谈吐甚有根性，不动声色地让他到後院碓米。八个月後有一天，弘忍告诉众弟子说，每一个人写一首偈，谁能悟道，我便传他衣钵。当时人人以为五祖座下第一大弟子神秀必得衣钵，所以也没有人去作这首偈。神秀在这种情况下，一来「责无旁贷」，二来也想让师父看看自己心中的见解，便在三更时候於南廊壁上写下心偈一首：
    身是菩提树，心如明镜台；时时勤拂拭，莫使惹尘埃。
    第二天五祖弘忍见到了这首偈，把神秀叫到座前询问。并谓：「汝作此偈，见即未到，只到门前，尚未得入...」。要神秀回去再作一偈。过了数天，神秀却作不出来。
●千古名诵
    有个童子行过碓房，唱诵神秀的偈。惠能闻後，问明缘由，便请童子引至大堂。礼拜之後，惠能说自己也有一首偈，但是他既不识字更不会写字，乃请人代书写下千古名诵：
    菩提本无树，明镜亦非台；本来无一物，何处拈尘埃。
    此偈一成，众总皆惊。消息传至五祖，了然於心，但恐人损害，遂脱了鞋子当抹布，立刻把这首偈擦掉，并且说「这首也嘛没有悟道」！
    第二天，五祖弘忍悄悄来到後院，看到惠能把大石头系在腰上，增加身体的重量来碓米，很是感动，於是和惠能展开一段非常空灵神妙的对话。弘忍问「米熟也未」？惠能曰：「米熟久矣，犹欠筛在」。於是祖以仗击碓三下而去。惠能知祖意，是夜三鼓入室，由祖为说金刚经。当说到「因无所住而生其心」，惠能大悟，於是五祖授衣钵以为信，并且说「衣为争端，止汝勿传...，汝须速去，恐人害汝」。
●迷时师度，悟了自度
    五祖弘忍亲自送惠能到九江驿，令上船，把 自摇。惠能曰：「请和尚坐，弟子合摇  」。祖云：「合是吾渡汝」。惠能云：「迷时师度，悟了自度」。
 我曾经在研究所毕业的前夕，因为看了这个故事，有感师恩，在实验室黑板上写下大大的这八个字，表达我心中强烈的情绪。我知道我就要永远告别我的学生生涯，再也没有人度我，我要自己度化自己了。
今天我意料之外地成为许多人的老师。远在接受学校的聘书之前，我其实也已经在外面开过很多课程，做着授业解惑的神圣工作。我的书籍文章，更使我扮演与广大读者之间一种默默的师生关系。每当一个课程的开始，不管面对的是业界的工程师，或是学校的学子，我总是告诉他们，课程是短暂的，课後才是长久的。一个课程就算长达一学期，也只是（只能是）奠定学习者日後自修的基础。
 进入社会的人，我想比较能够了解这里面的意义。象牙塔里的学生，即令闻言成理，总似乎不容易感受深刻。於是日复一日，年复一年，看着同学们勤嬉戏而荒精业。我带过好几届学生，大凡转学生、五专插班生、重考生都比较用功些，大概因为他们经历过一些小小的挫折。而他们的努力，很快使他们立於同侪之上。
 挫折在人生早些时候到来，谁曰不宜！
●谁悟了？
    禅宗讲究顿悟，基本上是一种比较「玄」的境界。说是「迷时师度，悟了自度」，其实，除了大德大贤，谁又敢说自己悟了？智慧容或可以顿悟，知识又岂能够如此？谁敢说他对知识「突然都懂了」？所以「悟了自度」的「悟」，在这里我把它解释为「有了扎实的基础」：当你有了足够的基础，你就可以不依靠任何人任何时间任何地点传授您知识。只要有书籍，你随时可以自度。拥有足够的基础，你甚至可以开始另一种更高层次的自度：你开始自己设想问题，自己推敲解答，自己设计验证的方法，并自己判断逻辑有没有破绽。再高明的老师，也没有办法把自己的悟力灌入学生心中；唯有学生自己动念思考，再由老师协助解开关键环节，学生自己才能开悟。
●南宗与北宗，顿悟与渐悟
    佛法有顿悟，学问可没有。如果有人说，我突然在某一天对 Java 开悟了，对 OO 开悟了，对 MFC 开悟了...，我想那是他刻意（为了炫耀）或非刻意（因为遗忘）地忽略了他所谓的「悟」那一天之前的所有努力。是的，那叫渐悟，不是顿悟。
Inside OLE 一书作者 Kraig Brockschmidt 在他的序里面有这段话：
    1993 年一月的某个周日下午，当我正做着与 OLE 全然无关的事情时，我突然获得了所谓的 OLE 涅  状态。所有关於 OLE 的支支节节突然全都归定位。在六个月的模糊心智之後，我突然看清楚了 OLE。
    Essential COM 一书作者 Don Box 在他的序里面亦有一段类似的话：
    幸运的是有一天（1998 年八月八日），突然像神迹一般，COM 对我变得再明白不过，我终於了解了 COM 的动机。如何把这个 programming model 应用在每天遇到的程式设计问题中，也因此显得再明白不过。
    听起来都是顿悟的例子。难道学习 COM/OLE 特别需要宗教信仰吗？我想是因为这些技术特别需要高度抽象思考，使得豁然开朗後的喜悦巨大到令人觉得是一种「突然的神迹降临」。其实你我都明白不过，知识点的突破，是靠知识面的累积。
●时时勤拂拭，莫使惹尘埃
    既然知道点的突破要靠面的累积，同时也知道我们「具足凡夫」，没有大宗师的智慧，我建议你还是多体会神秀的见解（六祖佛法南传，神秀创立北宗，主张渐悟）。把神秀的「时时勤拂拭，莫使惹尘埃」至少应用在你满桌子的经典好书上面。噢，你应该有满桌子的好书吧？没有?!那我就很为你惋息了，你连自度的小船都没有，连自救的工具都没有，谁来拯救你？我知道好多工程师桌上可怜没几本书，月入倒有 7,8 万，年终股票分红的张数比全年买书的本数还多。叹！不看书，你的日子会愈来愈贫乏，愈来愈空虚，因为你一直掏东西出去，掏空了人也就瘪掉了。
    工程师或许说「我都嘛看 paper 和 document。看书？呵呵，等书出来都太慢了啦」。喔，在 project 方面你不得不冲，你不冲公司也会要你冲。但你不觉得有很多基本的东西，其实你摇摇晃晃？有很多基础的东西，其实你从来没有好好把它搞懂变成自己的中心思想？你的 project 总是急如星火，所以可以 work 就好啦！「旗正飘飘（到处埋设 flag）」管它的！模组规划管它的！文件撰写管它的！目光浅短者，从来不去想日後的维护工作要如何进行，「深谋远虑」者，则想反正到时候我已经走人了。
    这不就是我所看到的业界通病吗？
    「学海无涯，唯勤是岸」，这句话我总想错不了。有人说，勤勉二字诀不是万灵丹，若无兴趣，再勤勉也没有用。我想从两个角度来看这件事。第一，「勤」能不能够克服「难」？如果目标是放在成为一个胜任的从业人员，这一点应该没有问题，毕竟 computer science 能有多难？Computer engineering 又能有多难？多花点功夫还有读不会的吗！一本不懂，再读另一本（前提是都是筛选过的好书）。一试再试做不成，再试一下嘛。 第二，「勤」能不能够克服「没兴趣」？大概不能！「学海无涯，唯勤是岸」这句话本来就是要以兴趣做为基础，这是大前提，着毋庸议，本来就不必说的。电子、电机、资讯的循环太快，竞争太烈，如果没有强烈的兴趣，念起来会非常非常痛苦，趁早转系转业吧。
     然而，有多少人根本是懵懵懂懂地进入大学，懵懵懂懂地填了科系？他们根本不知道自己真正的兴趣在哪里。也许兴趣会因为努力後的成绩提升而加分，亦未可知呀！ 坚定知道自己兴趣在哪里的人，是最幸福的人。自从我自己的人生终於归定位後，我清楚地有这种感受。  元智大学管理学院从去年起就大一不分系，大二开始才由同学自己选系。我非常佩服校方的这种从善精神与兴革魄力。
●书籍是永远的老师
    说到底，阅读习惯以及鉴赏能力的培养，是你能不能够在求学的道路上「自度」的关键。广义地说，也是你能不能够在人生道路上「自度」的关键。如果一辈子要靠别人来指点你该看哪些书，该怎麽看，忒也太没有长进了。你能阅读，就能鉴赏；阅读数量愈多，鉴赏能力愈高。很多人好奇我如何有能力评析那麽多又厚又深的大块头书，无它，因为我读的多，因为我读的深。
    【余秋雨.台湾演讲】（余秋雨/尔雅/1998）一书中在「建议阅读」这篇文章上写道，「我觉得一个人的最佳读书状态大多产生在中年以後，但能不能取得这种状态则取决於青年时期的准备」。余先生又说，曾有两位年老的大学图书馆管理员告诉他，他们能从一年级学生的借书卡上预测这些学生将来的成就，几乎百试不爽。有人毫无规律胡乱借，有人穷数年之力死啃一大堆名着，有人的借书卡过於疏空，有人的借书卡却又太密密麻麻。
 希望这些话能对我们产生一些启示。对於尚在学校就读的学生，我想特别指出，进入社会之後的工作是如此繁忙，你更需要在学校把握机会，奠定良好的习惯和良好的基础。
●边际效益
    如果你有一笔钱，放在银行的活存利息有 3%，定存利息有 7%，而且你暂时无需用钱，那麽你会把钱活存还是定存？
    当然是定存。多麽简单的选择。
    如果你知道，课前预习的话，上课听讲可吸收 70%；课後立刻复习，可把效果再提升 10%；课後第二天复习，只能提升 5%；课後第三天才复习，能保住原来的 70% 不错了；课後一个星期复习，只能保持 30%；期末考前才看，则当时脑袋瓜里只留有 10% 的残存记忆。
    那麽，你会课前预习并且课後立刻复习吗？
    很多人在处理金钱时都是聪明人，在处理时间时都愚蠢的要命。
    你是哪一种？
●如果可以循序来
    一位读者写 email 给我，他说『有点可惜，Windows 3.0年代我刚开始碰电脑。如果照程序走的话，应该可以把基础打好的』。
    面对此言我思潮起伏，想起自己这五、六年来的人生转折。『如果照程序走的话』，是的，我很幸运地照了程序来走，所以路不是太颠簸。我从 DOS 时代开始学习C programming、然後触摸低阶的 BIOS call 和 interrupt并学习 assembly 语言，然後研究保护模式以及记忆体管理，然後学习 SDK programming、学习 C++、学习 MFC programming、钻研 Windows 作业系统...。由於基础愈挖愈深，成果愈垒愈高，新技术新知识也就愈来愈容易上手。核心基础打得稳，更能够以不变应万变。
    现在才面对这五彩缤纷花花亮丽的资讯世界的人，不管你是大一新生，或是忙於工作专案一直没有机会充电，还停留在古早年代的工程师，我可以想像你们的苦闷。新知识新技术如泰山压顶，你不知道从哪一条路开始走。有师长前辈指导正确的学习次序已是万幸，有些东西（还不少）偏又不是那麽有绝对的次序性。好比说作业系统好了，我是先学习抽象的一般性作业系统概论（例如大三安排的课程）呢？还是先学习专一而具象的作业系统（例如 Windows）实作技术呢？一开始就抽象会使我坠入五里路，没有踏实感；一开始就具象又使我的常识与一般观念不足。又例如C++ 和 OO，臻於高峰前通常必须经过几个阶段的反覆学习，包括语言本身、程式实务经验、classes 设计能力、市售application framework 之运用、对 object model 的彻底认识。这些阶段并不是结束一个而後开始另一个，它们都有重叠性。经过这样的铺陈，你会发现，原来通往 COM的基础已经在这些阶段中扎好了。
    身在知识爆炸的时代，算是对求知行为的一个不幸吧。可是，永远有人生在你之前，也永远有人生於你之後，还能怎麽样？认命一点。
●令人佩服的学习精神
    这学期我开的 Win32 system programming and Win95 OS课程，除了自校学生选修，就我所知道的还有交大两位大学生和清大一位研究生，以及中坜地区几位工程师来旁听。过去也曾有台北来的工程师旁听。我非常佩服这些同学的学习精神。从台北或新竹坐车到内坜可不是件轻松的事，尤其在那想起来就头痛欲裂的下班时段。有一天我顺巧载那位清大研究生回竹，才知道他每周四上完我的课回到住处都超过晚上 11 点了。
   为了上三小时的课，前後再花四小时。这样的求知心真是不容易呀，我很佩服。   旁听的同学永远是最认真的，远道来的同学又更认真。因为他们更懂得珍惜。
●经典好书再次整理
    三不五时就会收到一些 email，要我推荐专业上的书籍。我再次把个人研习领域（C,C++,Win32 OS,Win32 Programming）内的一些好书胪列出来给大家做叁考。
    很多人混淆了所谓的入门书与基础书。入门书必须浅显易懂，因为它面对的是全然无知的新手；如何吸引并提升读者的兴趣，几乎是入门书最重要的功课。基础书不一样，它的读者早已入门，甚至有相当经验；它的任务是为读者挖好更深更实在的基础。通常这种书的论述层次都很深，一件事直接探到了源头；碰触范围也很广，旁徵博引以求全效。
    通常过了入门阶段，一本入门书对你已是毫无滋味（但不要回过头来骂它，毕竟你也曾受过它的帮助。何况一本好的入门书是非常不容易写的）。至於基础书，可以伴你长长久久，上面的注解眉批、心得笔记，甚至还可以唤起你的许多艰苦而欣慰的回忆。
    下面全都是可以为你奠基的书。其中 AW 是 Addison Wesley的缩写，MP 是 Microsoft Press 的缩写。如果有中译本，我会在书名後面加注，但这并不代表推荐。这些经典的中译品质，有的很好，有的普通，也有的错误百出。有些书我不确定有没有中译本，各位网友如果知道，请告诉我或公开回覆，谢谢。除了 "Macro Assembler Bible" 年代久远，其他都是 1996 以後的新书。
⊙Assemble
1. Microsoft Macro Assembler Bible 2/e（Barkakati/SAMS）   峰中译
⊙C++：
1. C++ Primer 3/e（Lippman/AW） 原文书即将出版。旧版有无中译？
2. The C++ Programming Language 3/e（Stroustrup/AW） 有无中译？儒林？
3. Inside The C++ Object Model（Lippman/AW）   棋峰将有中译本
⊙SDK：
1. Programming Windows 95（Petzold/MP） 松格中译
//注：大陆版-清华大学出版社
2. Windows 95 : A Developer's Guide（Richter/M&T Books）  棋峰中译
//注：大陆版-清华大学出版社
⊙VxD：
1. System Programming for Windows 95（Oney/MP）松岗将有中译
2. Writing Windows VxDs and Device Deviers 2/e（Hazzah/R&D Books）无中译本
⊙Windows O.S（and/or Windows System Programming）
1. Windows 95 System Programming Secrets（Matt/IDG Books）旗标中译
//注：大陆版-清华大学出版社
2. Advanced Windows 3/e（Richter/Microsoft Press）松岗中译
⊙Windows NT kernel mode driver：
1. The Windows NT Device Driver Book（Baker/Prentice Hall） 无中译本
⊙MFC
1. Inside Visual C++ 4/e（Kruglinski/MP） 无中译本。旧版由  棋峰中译
//注：大陆版4版-清华大学出版社
//    大陆版5版-希望出版社
2. Programming Windows 95 with MFC（Prosise/MP） 松格中译
3. 深入浅出 MFC 2/e（侯俊杰/松岗）      中文书
//注：大陆版--华中理工出版社
4. MFC Internals（Shepherd & Wingo/AW） 无中译本
⊙COM
1. Essential COM（Don Box/Addison Wesley）  棋峰将有中译
//注：有大陆版 

<img src ="http://www.cppblog.com/rhythm-xzy/aggbug/949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rhythm-xzy/" target="_blank">激情飞扬</a> 2005-11-05 13:22 <a href="http://www.cppblog.com/rhythm-xzy/archive/2005/11/05/949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何学习C++语言？（转载）</title><link>http://www.cppblog.com/rhythm-xzy/archive/2005/11/01/889.html</link><dc:creator>激情飞扬</dc:creator><author>激情飞扬</author><pubDate>Tue, 01 Nov 2005 06:12:00 GMT</pubDate><guid>http://www.cppblog.com/rhythm-xzy/archive/2005/11/01/889.html</guid><wfw:comment>http://www.cppblog.com/rhythm-xzy/comments/889.html</wfw:comment><comments>http://www.cppblog.com/rhythm-xzy/archive/2005/11/01/889.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/rhythm-xzy/comments/commentRss/889.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rhythm-xzy/services/trackbacks/889.html</trackback:ping><description><![CDATA[要提高写程序的能力只能通过多练习。多写和调试一些程序，从简单的做起，多读一些例程。C++是C的延伸，我觉得C是基础。用C能够熟练地写程序以后，再逐渐接触C++的程序设计理念可能更好一些。

人类的语言是工具,计算机语言也是工具.掌握工具的最好的办法是做个(稍微大点的)东西,这样对语言会有更好的理解,知道它能做什么不能作什么,然后才是做什么工程选什么工具.刚开始学语言的时候常常背语法,其实更重要的是练习练习再(大点的)练习.

"关于学C++, 我向你推荐一些书（当然能够结合课内项目实践更好）
1。The C++ Programming Language(Bjarne Stroustrup)
2。 Inside The C++ Object Model (Stanley B. Lippman) 
(这本书介绍一些C++的内部实现）
3。Advanced C++ Programming Styles And Idioms (James O. Coplien)  
（这本书介绍一些C++编程的习惯用法）
4。 STL Tutorial and Reference Guide （David R. Musser) （Professor Musser 
是我母校的教授，STL的创始人之一。这本书介绍Generic Programming 
的思想和标准）。
5。 Design Patterns (Erich Gamma) (很精典的面向对象设计的组件和实例）
当然，看任何一本书的时候都要动手（试例程或做习题）。然后尝试着在课堂项目中把书中的方法试验一下，以加深印象。" 

国外C++几乎所有的教材都被翻译为中文了，如果没有翻译的也已经有影印版出版。
TCPL和D&E
TCPL和D&E分别是《The C++ Programming Language》和《The Design and Evolution of C++》的简称，均出自Bjarne Stroustrup之手。说它们是C++语言圣经，并不为过。
中文名称：
《C++程序设计语言（特别版）》，机械工业出版社
《C++语言的设计和演化》，机械工业出版社
入门教程
Stanley B.Lippman, Josee Lajoie, C++ Primer (3rd Edition)
《C++ Primer (3RD)中文版》，中国电力出版社
Stanley B. Lippman, Essential C++
《Essential C++中文版》，华中科技大学出版社
《Essential C++（影印版）》，中国电力出版社
高效、健壮编程
《Effective C++中文版》，华中科技大学出版社
《More Effective C++中文版》，中国电力出版社
《Exceptional C++中文版》，中国电力出版社
《More Exceptional C++中文版》，华中科技大学出版社
模板和泛型编程
《C++ Templates全览（简体版）》，人民邮电出版社
《C++设计新思维：泛型编程与设计模式之应用》，华中科技大学出版社
标准库 
《C++标准程序库：自修教程与参考手册》，华中科技大学出版社
《Effective STL（影印版）》，中国电力出版社
网络编程
《C++网络编程，卷1：运用ACE和模式消除复杂性》，华中科技大学出版社
《C++网络编程，卷2：基于 ACE 和框架的系统化复用》，电子工业出版社
杂项
《C++编程思想（第2版）第1卷：标准C++导引》，机械工业出版社
《C++编程思想（英文版 第2版）》，机械工业出版社
《C++沉思录》，人民邮电出版社
《深度探索C++对象模型》，华中科技大学出版社
《深度探索C++对象模型（影印版）》，中国电力出版社
C++工程领域的最高境界：
《设计模式：可复用面向对象软件的基础》，机械工业出版社
<img src ="http://www.cppblog.com/rhythm-xzy/aggbug/889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rhythm-xzy/" target="_blank">激情飞扬</a> 2005-11-01 14:12 <a href="http://www.cppblog.com/rhythm-xzy/archive/2005/11/01/889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>