前言
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 道题,您做对了几道呢?私信聊聊您对这些题目的看法吧。