V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
x9498
V2EX  ›  程序员

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

  •  
  •   x9498 · 2016-01-04 11:38:23 +08:00 · 4082 次点击
    这是一个创建于 3248 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 、求推荐一些经典的书关于入门和提升,个人 c++水平是站在门槛前吧
    2 、不是有句话说 c++的水平决定你换工作的底气么
    3 、谢谢各位
    20 条回复    2016-01-05 09:39:44 +08:00
    AtlantisZ
        1
    AtlantisZ  
       2016-01-04 11:45:43 +08:00 via Android
    v2 就可以伸手吗...知乎.谷歌一车回答.经典书籍我个不擅长 c++的都有..
    bladeback
        2
    bladeback  
       2016-01-04 11:46:25 +08:00
    c++ primer (第五版) 吃透算了真正入门了。
    后边《 STL 源码剖析》,《 effective c++》 《 more effective c++》《深入理解对象模型》这些当你在进行了一些实践和对语言有理解之后,觉得能看懂了,再看,收获会很大。《标准 STL 库》这本大部头可以当成字典翻阅。
    harry890829
        3
    harry890829  
       2016-01-04 11:47:33 +08:00 via iPhone
    @AtlantisZ 其实书不是主要的,主要还是方向,高层?底层?等等,纠结了很久
    bobuick
        4
    bobuick  
       2016-01-04 12:00:45 +08:00
    主要就是多写咯,写个几万行自然就深入点了。光看书, effective 那些的话, 木有几万行的经历, 看都没看到痛点
    spww
        5
    spww  
       2016-01-04 12:26:21 +08:00
    写一阵子,看一遍 effective c++,直到完全理解。
    Matrixbirds
        6
    Matrixbirds  
       2016-01-04 12:42:04 +08:00
    参与开源项目。
    hitmanx
        7
    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
        8
    faywong8888  
       2016-01-04 13:09:51 +08:00   ❤️ 1
    真正拿 c++来干活儿,单纯的去学什么东西没法持久和深入。
    hitmanx
        9
    hitmanx  
       2016-01-04 13:15:09 +08:00   ❤️ 2
    对于我来说,如果能确信将来 10 年甚至更久,我都要做且只会做 c++开发,那么我觉得时间花下去可能还是值得的.或者对一些人来说,主要的工作就是搞 c++编译器相关的开发,那自然也需要知道每一个细节.否则花那么多时间在精通一门语言上面我感觉不划算.熟悉的是语言本身,而不是软件工程.

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

    C++好难。。。
    会 C++的人是真正的技术英雄,虽然 Linus 老是喷他们(不过没有什么是他不喷的 233 )~
    传说 C++的发明者说到现在也没有人能够完全理解他发明 C++的思想。
    好好学吧,加了个油~
    GentleSadness
        18
    GentleSadness  
       2016-01-04 22:20:52 +08:00
    effective c++,关于这书,我一直想问,在 C11 年代下,这书还有效吗
    snakeeye
        19
    snakeeye  
       2016-01-05 08:43:37 +08:00 via iPhone
    @GentleSadness effective modern c++
    Ethaniz
        20
    Ethaniz  
       2016-01-05 09:39:44 +08:00
    @GentleSadness 同样有效,比如智能指针相关的章节,书中需要用到 boost , c11 直接用标准库就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:28 · PVG 06:28 · LAX 14:28 · JFK 17:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.