如何学好C++语言求答案

 我来答
该问答中所提及的号码未经验证,请注意甄别。
爵爷3519
2013-10-05 · 超过78用户采纳过TA的回答
知道答主
回答量:149
采纳率:66%
帮助的人:63.4万
展开全部
我只能对你们说,没时间的话,就别学C++了,做你们喜欢做的事。生活中没有C++,也同样美好。
如果你准备学,一定要学好,那么我开个书单,应该问题不是甚大。
第一本书因人而异,基础好一些的,可以看Stanley B. Lippman的C++ Primer,这本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看Stanley B.Lippman的Essential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而且讲得非常清楚。
第三本书,就应该是Bruce Eckel写的、候捷译的Thinking in C++,这本书每过半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。
要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是ScottMeyers的Effective C++和More Effective C++带给我们的无尽收益。我MoreEffective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来简直是如饴甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴趣,可以发E-mail到
sjtu@263.net
或在饮水思源投条儿给gaobo索要,只要您提供光盘我就给免费烧。如果你已经深刻地理解了Effective C++和More EffectiveC++,那你可以发现,你在众人中已经是鸡群之鹤。可以指导项目运作了,可以编写一切你想做的程序了,可以指出别人看起来不错的代码的大小问题了。如果你能一眼看出有人的代码是对应于"条款27"或"条款M6",那你可真是让本人刮目了。
我已经讲了,如果要写程序,EC++和MEC++的境界已经足以使你自如应付,可是如果你还不满足,想关注一些理论层面的问题,或是想看看实现的代码,你就不应该错过这几本好极了的书。我是说Herb Sutter的Exceptional C++和MoreExceptional C++,这两本书的难度是非常大的,我对每一条的阅读笔记都是十多页。别是泛型程序设计的部分,这两本书旁征博引,极尽深入探讨之能事,每每看懂一条,都抹汗一次,大感酣畅淋漓;还有侯捷的 STL源码剖析 ,以实际的例子一点点地讲解一个STL是怎么样实现的,我是刚开始读,不发表评论;而Stanley B. Lippman,Cfront的实现者之一,执笔写出Inside the C++ ObjectModel,我只有一个字,就是基本帅呆了。我从中了解了无数的编译器解释源代码的细节,以及记忆体分配的细节,呵呵,这些都知道了,我还怕什么呢?最近得了另一Cfront实现者、C++标准委员会Koenig的 C++沉思录,看起来非常不错,这里也推荐给大家,但我也没看完,亦无发言权。
一切中国大陆作者的书,一概不要看(包括我的)。一切VC++或讲特定的编译器的书,一概不要看。如果需要补C语言的课,买一本非常小的K&R的The CProgramming Language足矣,其它的书一概不要看。不要先学C,再学C++,而要直接学C++。你不是先学古文,再学白话的,对不对?所以相信我,直接来更容易。以上文字,皆为原创,本人愿意为每个字负责。
第二篇好久未来C板了,原因这段时间一直在研究两本书,看得自己不敢多说一句话。
1、《Effective STL》
作者:Scott Meyers
出版社:中国电力出版社
  一开始欺负这本书比较薄,想快点看完,但不久就发现自己已经翻不动了。直到看完最后一个字,才发现一个基本的事实:薄的不是这本书,而是自己的见识。
  有关STL的书也读了不少,正如读《Effective C++》以前,有关C++的书也读了不少。Meyers的书总是给人一种脱胎换骨的提升感觉,他总能在大家以为老生常谈的地方挖出意想不到的新意,并指出一些一般人习以为常的东西其实存在种种危机,或是在一些看来完全等价的选择中,为特定的场合选择最有效的(Most
Effective)那一种。而且他的切入口总是让人看得懂的(不像Stroustrup的书,第一句话就要琢磨半天),但是他总是会选择几个拓展点,并把它们分析得淋漓尽致,这时候就需要一段代码一段代码甚至是语句粒度地阅读了——当然,最后总是看得懂,这和读者的阅读程度总是正比,这会给人极大的成就感。可以说,在STL
实践的书籍,无书可出其右(当然在STL实作方面,我还是要向大家推荐侯捷的
《STL源码剖析》)。
  读完这本书后,和Pascal就产生明显的距离感了。这里我仍然要说:请热爱Delphi!我还是更愿意写“var s:set of char;”而不是“set <char*, less<char*>, allocator<char*> > s”,;-)。
2、《Modern C++ Design》
作者:Andrei Alexandrescu
译者:侯捷、於春景
出版社:华中科技大学出版社(中文)
    中国电力出版社(影印)
  读完这本书的第一页,我就知道自己放不下它了,但我也知道,我的苦难经历又要多上一笔了。用C++实作设计模式,已经是骨灰级的难度,但这本书明显还在讲一个template的对象模型的问题,这在我读《Inside the C++ Object Model》时是屡攻不下的难点。不过,出乎意料的是这本书居然使我具有一些概念了,而且动手写出了一个SmartPointer。
  这本书我还远不能说我读懂了,但是确乎是读完了。如果你还没有读过对象模型和设计模式的书,我认为需要读一读。否则,直接看这本书根本就是受罪。最近,有一些朋友也注意到设计模式的重要性了,可从明年起我在《电脑报》上要发表一些文章,届时请朋友们指教吧。
村里那点事TA伾
2013-10-06 · TA获得超过131个赞
知道答主
回答量:161
采纳率:100%
帮助的人:103万
展开全部
怎样学好它,也不知应先从那里开始学起,关于C++的入门其实很简单,你只要一步步按照你手中的那本C++教材来学就可以了,也许你把C++学的很烂,这时你千万不要认为我好像很精通C++了。 我个人认为要想学习C++,最好直接学习它,不要先学习C语言,然后在学习C++,虽然C++是从C语言上发展过来的,但如果你对C语言了解的越多,在你写C++程序的时候,你很难摆脱C的风格,既使你是一位很有经验的程序员,如果你对C很了解,在学习C++的时候,尽量使用C++的风格,我这样并不是说C不好,关键我们现在要了解的是C++而不是C。 现在让我们深入学习C++吧!C++的难学,不仅在它那广博的语法、语法背后的语义、语义背后的深层思维、深层思维背后的对像模型;C++的难学,还在与它提供了四种不同的编程思维模型。当我们找来一本C++教材时,当我们翻开第一页时,这时我们已进入了C++的世界,我们现在开始探索,开始在追求新技术的旅程中! 想学好C++,熟练掌握它的语法是不可少的,当你掌握了C++的语法时,那么我要恭喜你,你已正正进入了C++的世界,要想学好C++,你只有努力的学习,经常的思考多多的实践,这时你会问了,我应该还要学习什么呢? C++的语法我都已掌握了啊!我是不是可以学习Windows编程了呢?不要急,你是已掌握了C++的语法,但你能用它写出高效率的程序吗?你已对C++所有运行机制都了解吗?是的,单单了解C++语法是不够的,接下来你的任务很多,要学习如何高效地使用C++语言。现在我就教你怎样的学好它,怎样的高效使用它。 我们还是先从C++的语法开始说起吧!这里我只做一个简单的概述,当我们学习C++的时候,你先要了解它的编程模式,其中包括面向对像编程、通用编程和传统的过程化编程。当你在学习一个C++语法时,如果你一时感到很难理解,不妨你先跳过这一段,继续向后学习,当你看完你所学习C++的那本教材时,你在回过头来学习C++,你会发现其实它就是那么回事,有很多人在学习C++时,刚学习到了一半,突然感到好像以前学习的语法忘了许多,他们会把书又翻回去,找回那忘掉的语法,如果你在学习C++时也有这样的情况,你大可不必那么担心,你现在的任务是继续你的学习,不要去管那一时不记得的语法,如果你现在去重新学习那一时忘掉的C++,恩,不错,这看起来你好像对那语法已深深的牢记在心,当你的C++在学习到这里时,你能保证前面的语法不在遗忘吗?这时的你在学习新的C++语法时,但心会忘掉前面刚刚找回的C++,你说这时你能学好新的C++语法吗?你会一边学习新的,一边重复旧的,这样一来,那就糟了,这时的你会很容易搞乱新旧C++语法,新的记不住,旧的又被新的语法搞乱了,这时的你不得不从头再来(毕竟你是初学者)。 对于初学者来说,C++的广博语法是件头疼的事,学会了这个却忘了那个,就像我上面提到的那样,这时的你应该继续的学习C++新知识,等看完你手中的那本C++教材时,你在来学习忘掉的语法,这时你会感觉好像C++很简单,没有我们开始说的那么难学啊!你会觉得我开始说C++难学是用来吓唬人的。我说C++难学当然不是用来吓唬人的,这时的你对C++语法已非常熟悉了,这时你千万不要认为对C++已很精通,就像我开头所说的那样,虽然现在你已摆脱了初学着的称呼,但你也不能算是位精通人士啊!你只掌握了C++的大概,接下来的你就要深入学习拉!]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戳蟑螂480
2013-10-06 · 超过75用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:165万
展开全部
多看例题,有些东西先强行记住,后面回过头来复习下。而且,注意自己的思维方式,要有逻辑性、条理性。按机器的思维一样进行。]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wleotqor
2013-10-06 · 超过66用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:114万
展开全部
我这里有些经验,希望对你有帮助:1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;6.会用Visual C++,并不说明你会C++;7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;9.看Visual C++的书,是学不了C++语言的;10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?11.浮躁的人容易问:我到底该学什么;——别问,学就对了;12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;17.C++不仅仅是支持面向对象的程序设计语言;18.学习编程最好的方法之一就是阅读源代码;19.在任何时刻都不要认为自己手中的书已经足够了;20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;26.请看《程序设计实践》,并严格的按照其要求去做;27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;31.学习编程的秘诀是:编程,编程,再编程;32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;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.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;48.保存好你写过的所有的程序——那是你最好的积累之一;49.请不要做浮躁的人;50.请热爱C++!]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式