[请教]请问各位, c++如何更好的提升

2016-01-04 11:38:23 +08:00
 x9498
1 、求推荐一些经典的书关于入门和提升,个人 c++水平是站在门槛前吧
2 、不是有句话说 c++的水平决定你换工作的底气么
3 、谢谢各位
4108 次点击
所在节点    程序员
20 条回复
AtlantisZ
2016-01-04 11:45:43 +08:00
v2 就可以伸手吗...知乎.谷歌一车回答.经典书籍我个不擅长 c++的都有..
bladeback
2016-01-04 11:46:25 +08:00
c++ primer (第五版) 吃透算了真正入门了。
后边《 STL 源码剖析》,《 effective c++》 《 more effective c++》《深入理解对象模型》这些当你在进行了一些实践和对语言有理解之后,觉得能看懂了,再看,收获会很大。《标准 STL 库》这本大部头可以当成字典翻阅。
harry890829
2016-01-04 11:47:33 +08:00
@AtlantisZ 其实书不是主要的,主要还是方向,高层?底层?等等,纠结了很久
bobuick
2016-01-04 12:00:45 +08:00
主要就是多写咯,写个几万行自然就深入点了。光看书, effective 那些的话, 木有几万行的经历, 看都没看到痛点
spww
2016-01-04 12:26:21 +08:00
写一阵子,看一遍 effective c++,直到完全理解。
Matrixbirds
2016-01-04 12:42:04 +08:00
参与开源项目。
hitmanx
2016-01-04 12:59:32 +08:00
仅从学习的角度上来说,c++真是可以很庞大的.所以我现在深深地觉得够用就好了,不过这儿还是可以说说我走过的弯路.

基本的语法知道后,还得阅读<effective c++>之类去了解它的坑吧.好多人都说这本书是宝书,每一遍都会有新的体会.我很同意 bobuick,spww 说的,这本书没有足够的工程经验,要完全理解是很困难的,这也是为什么很多人要看很多遍的原因.然后可能会觉得书中有些坑很奇怪,想了解得更透彻,于是 google 一番,发现有人推荐<深入理解对象模型>,这本书能完整啃下来也很难.

STL 起码得会用吧,有人会推荐厚厚的大部头<C++标准程序库>(虽然其实大部分是例子且只看常用的部分的话也还习惯你).然后就会有人说要彻底了解 STL,你得看<STL 源码剖析>.

以为终于差不多了吧,发现很多项目在用 c++11 了,那得找本系统介绍 c++11 的书看看吧,比如 Scott Meyers 大婶的或者 IBM 出的那本.然后发现 c++11 里又增加了很多新的库,比如 thread library.以上的书还没介绍,那就得再搜点资料看看.然后可能还会碰到例如 std::regex 在 gcc 4.6/4.7 里已经定义,但未完全实现之类的坑.

boost 用的也很广,也得看看吧?又有很多人不满意停留在会用上,欢快地去读它的源码了.

以上还不涉及到阅读过程中其它的知识,例如标准库里涉及到的系统调用等\深度探索 c++模型里涉及到的编译相关的知识,stl 里涉及到的算法知识,甚至单独的例如设计模式之类的.

终于感觉差不多了吧?你去读一些比较复杂的开源库(或者很不幸像我一样发现工作的项目里就有人用了这种技巧,虽然很讨厌,但是能怎么办呢)发现还是读不懂,很可能里面用了一些高级的模板技巧甚至模板元编程,于是你又想去读<C++ templates complete guide>或者<Modern C++ pattern>.这两本能啃完的那也不是一般人了.
faywong8888
2016-01-04 13:09:51 +08:00
真正拿 c++来干活儿,单纯的去学什么东西没法持久和深入。
hitmanx
2016-01-04 13:15:09 +08:00
对于我来说,如果能确信将来 10 年甚至更久,我都要做且只会做 c++开发,那么我觉得时间花下去可能还是值得的.或者对一些人来说,主要的工作就是搞 c++编译器相关的开发,那自然也需要知道每一个细节.否则花那么多时间在精通一门语言上面我感觉不划算.熟悉的是语言本身,而不是软件工程.

且 c++的很多问题之所以那么复杂,并不是必须那么复杂,很多其它语言都有更为精简\灵活的解决方式.c++的复杂度是人为创造出来的,是设计语言时为了做到后向兼容,又要把功能做大做全之类的初衷的妥协.很多 c++的坑,就只是 c++语言本身的坑,换门语言没有任何意义.很多所谓高级的技巧,也只是 c++本身的语法糖,但是复杂度却和学一门新语言也差不多.
vanxining
2016-01-04 13:26:02 +08:00
我觉得学得再深入,现实中用不上的话那也很快会忘记的……
尤其是模板元编程相关的内容,似乎在工作中的代码里面很少见。
当然,有时间了看过了有个印象还是挺好的。
vanxining
2016-01-04 13:27:54 +08:00
因为 C++ 有些特性是为库作者准备的。
jcSun
2016-01-04 13:57:31 +08:00
同问, c++有什么好的练习的方式吗?
eliteYang
2016-01-04 15:14:53 +08:00
任何语言的进阶方式都是一样的,多用,多写,多看,多思考
kotokz
2016-01-04 15:25:24 +08:00
别学 c , 学 c++, 用 c++
例如,学 string 而不是 char *
学 vector 而不是[]array
多用 c++特性,你会发现更有趣,也更简单
k9982874
2016-01-04 15:29:29 +08:00
多读多写多想 唯手熟尔
singer
2016-01-04 15:38:27 +08:00
我们老师说,他朋友公司现在来面试的 C++程序员,啥也不会,开口就说底薪 8K ,不留还不行。 C++太缺了,也不知道是不是真的。
libook
2016-01-04 16:31:45 +08:00
我是路过来顶的。

C++好难。。。
会 C++的人是真正的技术英雄,虽然 Linus 老是喷他们(不过没有什么是他不喷的 233 )~
传说 C++的发明者说到现在也没有人能够完全理解他发明 C++的思想。
好好学吧,加了个油~
GentleSadness
2016-01-04 22:20:52 +08:00
effective c++,关于这书,我一直想问,在 C11 年代下,这书还有效吗
snakeeye
2016-01-05 08:43:37 +08:00
@GentleSadness effective modern c++
Ethaniz
2016-01-05 09:39:44 +08:00
@GentleSadness 同样有效,比如智能指针相关的章节,书中需要用到 boost , c11 直接用标准库就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248132

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX