前言
5
月 18
日参加了 Incredibuild
与博览网联合举办的主题为 《深入解析 20 个 c++ 典型输入错误》的线上研讨会。主要讲解了 20
个 C++
中的典型错误。本以为作为一个 c++
老鸟,做这些题应该问题不大吧?您猜怎么着?20
道题,我可能没做对 5
道题目。汗!!!
话不多说,请看题。
20 题
我这 20
道题截图列在下面,大家可以试试自己对 C++
的掌握程度。
说明: 以上截图都来自线上研讨会的
PPT
,我只是个搬运工。
怎么样?有没有被刺激到?是不是有很多拿不准的地方?对照参考答案来看看自己答对了多少题吧。
参考答案摘录如下:
B C D B A
B B B A C
B D B D C
B D A A B
资料
视频回放地址在下面海报的二维码中,感兴趣的小伙伴儿可以扫码查看。视频中有每道题比较详细的解释,PPT
中有每道题相关的参考资料。PPT
可以通过网盘下载。百度网盘链接: https://pan.baidu.com/s/10FNs6ENXk4uJg6h629fRTw?pwd=xpnv 提取码: xpnv
注意: 观看回放可能需要报名。
感受
我认为这些题考察的比较细节,但是又非常重要。我越来越觉得 C++
就是这样,如果有些细节不知道,在不知不觉中会有性能损失,甚至会导致错误的行为。用孟岩大佬的话说就是心智负担太重。
比如,新标准中引入的移动语义可以解决拷贝的效率问题。但是如果脑子里没有这根弦儿,很容易漏掉移动构造函数和移动赋值函数。
又比如,编译器会在必要的时候帮我们生成构造函数、析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数和移动赋值运算符(移动语义)。但是,什么是必要的时候呢?如果我们实现了析构函数,编译器是不会自动为我们生成移动构造函数和移动赋值运算符的。
接触 C++
时间越多,越能理解 Linus
大神怒喷 C++
是糟糕程序员的垃圾语言。中文翻译版本链接如下,感兴趣的小伙伴可以读一读。
http://blog.csdn.net/turingbook/archive/2007/09/07/1775488.aspx
总之,不得不承认的一点是这门语言真的是越来越复杂了。也越发觉得我还是太菜了,要学习的东西太多了。
好书推荐
相信,搞 C++
开发的小伙伴儿一定听过或看过 Scott Meyers
大神的 《Effective C++》
和 《More Effective C++》
。强烈推荐一下他的新书 《Effective Modern C++》
。
如果您想理解 auto
、decltype
、型别推导、万能引用等,一定要好好读读第 1 章
和 第 5 章
,相信一定能对相关概念有全新认识。如果您对智能指针感兴趣,一定要好好读读 第 4 章
,本以为自己对智能指针了解的够透彻了,再读后又有了新收获。
私信聊聊
不知道这 20
道题,您做对了几道呢?私信聊聊您对这些题目的看法吧。