配色: 字号:
C++教程
2012-08-06 | 阅:  转:  |  分享 
  
C++语言基础教程http://58.251.57.67/down?cid=6A8146D9E8BF46547DB1E3BB6F45D23896776C1D&t=3&fmt=-



C++Primer第四版http://58.251.57.67/down?cid=127EE441A4DEFB6F94492E3CB4E62535D5756AD1&t=13&fmt=-



讯雷下载链接↑



PDF阅读器http://58.251.57.67/down?cid=AE3434EE67871B21CD072D39416C421061BA99B8&t=2&fmt=-



C++的奥义当然是面向对象;但是掌握C++的语法并不代表就掌握面向对象的技术,这个世界上使用C++却不懂面向对象的人很多;C++仅仅是支持面向对象,也就是说他的语法包含面向对象的特点,但面向对象不是语言特质,而是一种思想;C不是面向对象的语言,但用C一样能写出具有面向对象思想的程序;

什么是面向对象?这同样是需要亲身去体会的;我认为这是比学习C语言更需要时间的琢磨的事情;

对相当一部分人而言,C++、C#和Java都不是面向对象的语言;

自己不写类,或几乎不写类,或很少写类,或写类也就写那么几个的,都不是面向对象的程序员;

只知道使用别人写的类的,也不是面向对象的程序员;

只有自己写类,写很多类,写类库,自己调用自己写的类,类之间相互调用、继承,才能算得上是具有面向对象思想的程序员;此外,还要看类的层次、接口设计是否合理,才能区分掌握面向对象的技术程度;

C++明显要比C#和Java难学,原因:第一,指针!C++是永远也不会放弃指针的,如果你接受不了它,那么请选择那些没有指针的语言;C和C++两大共同的奥义就是:内存管理,和程序员是不会犯错误的;如果程序员写错了代码,那么他一定是有他这样写代码的理由,这就是C/C++的理解;因此,指针这个最危险的东西成为了大师们最喜爱的利器,也是C/C++中最最重要的部分;所以,C++中不会出现内存回收器那种多余的东西;(因为程序员是不会犯错误的,那么内存泄露也是有他需要泄露的理由的,如果你觉得这句话很可笑,那么你还离大师很远呢,直到你认为它真的是太正确了)

第二,凌乱的语法,因为它实际包含了两种语言的语法,而且部分C语言的关键字在C++中被赋于了新的含义,但又保留原来在C语言中的含义;如果你是初学者,当你不清楚编译器什么时候做C解释,什么时候做C++解释的时候,就容易产生混淆;通常,C++的程序员学习C#和Java很快,但C#和Java的程序员学习C++基本就和他们刚学C#和Java那会一样,几乎没有任何可以借鉴的地方;

C++之所以会这样,这与它的发展历史有关,C++最早的时候叫CwithClass,而早期版本的C++编译就是直接将C++代码转换为C代码再进行编译的;所以,C++现在的特性都是可以由C实现的,如果你能理解这一点,对你学习C++是很有帮助的;或者,你可以将C++理解为,为了面向对象而偷换概念的C;



对于具体怎么学习编程,学习的时候一本书就足够了,而且不需要多么高深的书,不需要是外国人写的,学校发的教材就可以了,虽然你最后会发现它错误百出,又不全面,但高手都是以这样的书起步,最后又把它扔掉的;对于书的态度,只要它的水平比你高就可以了;

学习没有任何诀窍,也没有太多的经验可以传授的,听课、看书,然后编习题,最好是看一章编一章的习题,不要把整本书都看完了再去编程;打开书编书本的例子,合上书编书本的习题,习题的正确与否以你程序的效果为准,而不是正确答案或别人写的程序;

我个人的经历,大学里没有看课本以外的编程书,没有做老师布置的以外的习题,所有习题都是自己独立完成的;所以,书上的例子和习题其实我也是没有做全的,如果你做全了,那我佩服你;起码做到和我一样,你就是全系C语言第一名!



最后是关于书的选择,首先是针对那些从零学起,白手起家的同学,前面我列举的书都不适合你,普通的大学教材(学校里发的)就最适合你了,个人建议潭浩强(我就是用他的C语言教材的)和钱能(没看过,听说不错)的;

对于已经学会语法,能够合上书独立编程,且累计编写的程序达到1万行的,可以看前面我列举的书,直到觉得这些书很无聊为止;

对于接触C/C++三年以内的同学,不要看任何关于实际开发环境的书籍,如:封面上带有MicrosoftVisualC++字样的书,号称多少天学会或精通C++的书(那是笑话你也信?),各种编程安例、实例,什么一百例,一千例的书(一百万例也不要去理他),看上去很时髦的书,什么网络编程啊,什么图象、声音、多媒体啊,什么黑客啊,什么网站开发啊,以上通通都不要去看,有百害而无一利;

其实很简单,从菜鸟到高手用不了几本书,但需要很多个键盘;



视频教程:↓



清华大学C++程序设计语言教程



http://www.cntvu.net/teaching/vod/C++/C01.rm

http://www.cntvu.net/teaching/vod/C++/C02.rm

http://www.cntvu.net/teaching/vod/C++/C03.rm

http://www.cntvu.net/teaching/vod/C++/C04.rm

http://www.cntvu.net/teaching/vod/C++/C05.rm

http://www.cntvu.net/teaching/vod/C++/C06.rm

http://www.cntvu.net/teaching/vod/C++/C07.rm

http://www.cntvu.net/teaching/vod/C++/C08.rm

http://www.cntvu.net/teaching/vod/C++/C09.rm

http://www.cntvu.net/teaching/vod/C++/C10.rm

http://www.cntvu.net/teaching/vod/C++/C11.rm

http://www.cntvu.net/teaching/vod/C++/C12.rm



//----------------------------------------------------------------------------------------------------------------



转帖:



1.把C++当成一门新的语言学习(和C没啥关系!);

2.看《ThinkingInC++》,不要看《C++变成死相》;

3.看《TheC++ProgrammingLanguage》和《InsideTheC++

ObjectModel》,不要因为他们很难而我们自己是初学者所以就不看;

4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;

5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;

6.会用VisualC++,并不说明你会C++;

7.学class并不难,template、STL、genericprogramming也不过如此——难的是长期坚持实践和不遗余力的博览群书;

8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;

9.看VisualC++的书,是学不了C++语言的;

10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?

11.浮躁的人容易问:我到底该学什么;——别问,学就对了;

12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;

13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!

14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;

15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;

16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;

17.C++不仅仅是支持面向对象的程序设计语言;

18.学习编程最好的方法之一就是阅读源代码;

19.在任何时刻都不要认为自己手中的书已经足够了;

20.请阅读《TheStandardC++Bible》(中文版:标准C++宝典),掌握C++标准;

21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;

22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

23.请看《EffectiveC++》和《MoreEffectiveC++》以及《ExceptionalC++》;

24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;

25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;

26.请看《程序设计实践》,并严格的按照其要求去做;

27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;

28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;

29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;

30.读完了《InsideTheC++ObjectModel》以后再来认定自己是不是已经学会了C++;



31.学习编程的秘诀是:编程,编程,再编程;

32.请留意下列书籍:《C++面向对象高效编程(C++EffectiveObject-OrientedSoftwareConstruction)》《面向对象软件构造(Object-OrientedSoftwareConstruction)》《设计模式(DesignPatterns)》《TheArtofComputerProgramming》;

33.记住:面向对象技术不只是C++专有的;

34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;

35.把在书中看到的有意义的例子扩充;

36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;

37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;

38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;

39.C++语言和C++的集成开发环境要同时学习和掌握;

40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;



41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;

42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);

43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;

44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;

45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;

46.记录下在和别人交流时发现的自己忽视或不理解的知识点;

47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version100.XX;

48.保存好你写过的所有的程序——那是你最好的积累之一;



49.请不要做浮躁的人;

50.请热爱C++!

献花(0)
+1
(本文系小云蔡首藏)