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

求 C++11 书籍推荐

  •  
  •   xuboying · 2017-02-25 16:37:21 +08:00 · 3417 次点击
    这是一个创建于 2832 天前的主题,其中的信息可能已经有所发展或是发生改变。
    c/c++是大家上学时候都有可能学到的课程,我那时候学了本不正宗的教程,一直把有类的 c 当成 c++的全部,后来看了别人的教程才知道不会 vector 就是在坐井观天。后来看了 Scott Meyers 大神的高效 C++等一系列书籍后才知道 c++程序的工程化写法

    最近看了 sm 大神的现代 c++中英文对照以后,对 c++11 又有了粗浅的认识。但是看了 http://en.cppreference.com/w/ 的网站后又有一种 sm 大神的现代 c++也是个加智能指针的 c++03 。
    cppreference 上大量的 ctti(compilier time type information)没有很好的展开。 cppreference 又只是一个工具网站。

    没有给出观点类的用法指导。有没有类似 sm 大神风格,描述 c++11 ctti 方面的书呢?最好是有中英对照的

    顺便吐槽一下
    看了 c++11 以后发现 perl , js 都是非常易读的语言
    perl 说我$多, js 说我{}多, lisp 说我()多, python 说我 tab 多,现在 c++可以挺起腰板说我<>多。。。
    第 1 条附言  ·  2017-02-25 18:20:42 +08:00
    举一个例子
    std::static_pointer_cast
    http://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast
    但在 primer 中没看到这个(也许我看到不够新)

    在一段代码中用到了

    https://stackoverflow.com/questions/42336899/how-to-cache-store-shared-ptr-with-class-using-template

    简单运行了一下这个代码没有什么问题, bt 也过了,但是会不会有什么不知道的问题等着我,就不清楚了,反正我是先用着了。

    写着写着就发现有更多的代码要用到 stl 里 11 或 14 的新语法。越来越没底了。
    24 条回复    2017-10-25 10:46:51 +08:00
    introom
        1
    introom  
       2017-02-25 16:43:46 +08:00 via Android
    sm 是什麼?

    書?看 Lippmann 的 primer 就行。


    讀個幾遍吧,再多加實踐,差不多了。

    其他就看語言規範, x64 abi, 夠了。
    kindjeff
        2
    kindjeff  
       2017-02-25 17:09:57 +08:00 via iPhone
    怎么能用 tab 呢
    saberlion
        3
    saberlion  
       2017-02-25 17:16:32 +08:00
    Meyers 大神的 effective modern c++
    xuboying
        4
    xuboying  
    OP
       2017-02-25 17:23:08 +08:00
    @introom sm 是指 Scott Meyers 。 c++11 到 c++17 之间的 stl 新用法, primer 涉及的不多,也许我看的不是最新版。而且 primer 和 cppreference 没有什么观点性的内容,就是个陈述。哪里是坑要我自己去填。我只想站在巨人的肩膀上写我想写的代码,而不是让巨人教我怎么成为巨人。。。
    xuboying
        5
    xuboying  
    OP
       2017-02-25 17:24:46 +08:00
    @saberlion emc++我有中英文版。这个只是纯语法,对 stl 的大量新功能讲的不多,也许出书的时候,还没有确定语法, sm 大神也还没啥具体工程经验?
    xuboying
        6
    xuboying  
    OP
       2017-02-25 17:25:17 +08:00
    @kindjeff 必须 4 空格 tab (我不信你是按 4 下 space 按出来的)
    visionsmile
        7
    visionsmile  
       2017-02-25 17:25:33 +08:00
    基础语法推荐 The C++ Programming Language 4th ,其实和 C++ Primer 5th 互有长短吧...有时间的话可以都看看......
    我之前简单地写过两本书的区别:http://imzlp.me/posts/4367/
    visionsmile
        8
    visionsmile  
       2017-02-25 17:26:30 +08:00   ❤️ 1
    @xuboying TC++PL 上册是讲语法,下册讲 STL 。
    golmic
        9
    golmic  
       2017-02-25 17:50:35 +08:00 via Android   ❤️ 1
    难道不是 C++ Primer
    easing
        10
    easing  
       2017-02-25 18:01:46 +08:00
    我平时工作用的大多是 C++,话说 11 里用的最多的语法就是 auto 、右值引用和 move 语义。其它比如 lambda 或者 constexpr 等用的很少,多写就行了,为啥要专门看书?
    xuboying
        11
    xuboying  
    OP
       2017-02-25 18:07:03 +08:00
    @easing 这说明我们写的东西不同而已,我遇到的问题主要是编译时模板类型鉴定,这块没法像运行时一样设断点,打印等方式调试,编译器报错的地方和我的代码差了十万八千里,很多都在标准库里面,我希望系统的了解一下这些新 stl 的语法的坑。
    xuboying
        12
    xuboying  
    OP
       2017-02-25 18:09:32 +08:00
    @golmic 真正学成 primer 的可以成为大师了,不过我觉得我不是大师的料,只是能粗浅的理解而已(遇到坑还会毫不犹豫的跳进去的程度)。
    thekll
        13
    thekll  
       2017-02-25 18:10:51 +08:00 via iPhone
    Although the C++ Standard Library and the STL share many features, neither is a strict superset of the other.
    visionsmile
        14
    visionsmile  
       2017-02-25 18:38:50 +08:00   ❤️ 1
    对了,如果你主要是想了解 STL 库那些...就读 TC++PL 4th 下册和 The C++ Standard Library:A Tutorial and Reference ,第二版也是 C++11 的。
    canautumn
        15
    canautumn  
       2017-02-26 03:04:11 +08:00
    既能包括 C++的所有功能,又不能是工具书而是娓娓道来那种的,能有这种好事?我也想知道。
    srlp
        16
    srlp  
       2017-02-26 03:32:59 +08:00 via iPhone
    c++ primer 通读一遍就好了,然后当词典查
    linux40
        17
    linux40  
       2017-02-26 08:08:20 +08:00 via Android
    c++ prime 又不是神,只能是够入门,能到上面所吹嘘的程度还差的远呢。
    introom
        18
    introom  
       2017-02-26 11:23:40 +08:00   ❤️ 1
    @xuboying 你回复说的例子,纯粹是搭积木呀。所谓 C++11 , C++14 , 还是 17 ,你要担心的,可能就是多的语法,而不是语法糖呀。比方说, C++17 语言规范的 8.5 章节,引入了[dcl.decomp].

    从 C++98 以后,新加了多少东西? 我的感觉是没有太多,该有的 primer 里都说到了,而且高屋建瓴,让你少走弯路。
    从 C++98 以后,删了多少东西? 那倒是很多,比如 export, 比如 auto_ptr, 比如 throw exception spec.
    从 C++98 以后,小变了多少东西?有一些,不过都很细微,比如 default argument for function template parameter

    不管怎么变,编译的模型没变, separate translation.,, multiphase of translation, 再考虑我前面说的, Itanium C++ ABI, 你觉得能在本质上变化多少?
    包括反反复复终于可能要被加入 draft 的 concepts ,几十年前 bjarne 早就提了呀。
    所以真正新的东西,不多,很少。

    本质上,你要提高 C++,不如理解清楚 C++98 以及之前的东西。

    @linux40 够了。以及上面也没有人在吹嘘什么呀。
    gaodq
        19
    gaodq  
       2017-02-26 12:05:22 +08:00 via iPhone
    看 rocksdb
    lishunan246
        20
    lishunan246  
       2017-02-26 13:28:13 +08:00   ❤️ 1
    我看过的一些
    基础: C++ Primer
    一些人生经验: Effective C++, Effecitve Modern C++
    一些编译器的具体实现: C++对象模型
    os 相关: Linux/Unix 系统编程手册,Windows 核心编程
    模板: C++ Templates, 你说的 ctti 大概是这里面的一些东西,感觉 C++11 并没有在模版方面有大的改动,这本书应该还没有过气
    yche
        21
    yche  
       2017-02-26 13:55:51 +08:00   ❤️ 1
    可以参考一下我写的这个推荐,
    http://blog.cheyulin.me/?p=318
    zhidian
        22
    zhidian  
       2017-02-26 17:31:07 +08:00
    sm 大神……
    billwsy
        23
    billwsy  
       2017-03-07 23:22:05 +08:00 via iPhone
    看 Google Coding Style 吧
    hackpro
        24
    hackpro  
       2017-10-25 10:46:51 +08:00
    emc++
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:25 · PVG 12:25 · LAX 20:25 · JFK 23:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.