难说 | 看来我还没有入门 CPP

前言

518 日参加了 Incredibuild 与博览网联合举办的主题为 《深入解析 20 个 c++ 典型输入错误》的线上研讨会。主要讲解了 20C++ 中的典型错误。本以为作为一个 c++ 老鸟,做这些题应该问题不大吧?您猜怎么着?20 道题,我可能没做对 5 道题目。汗!!!

话不多说,请看题。

20 题

我这 20 道题截图列在下面,大家可以试试自己对 C++ 的掌握程度。

q1-3

q4-6

q7-9

q10-12

q13-15

q16-18

q19-20

说明: 以上截图都来自线上研讨会的 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

注意: 观看回放可能需要报名。

poster

感受

我认为这些题考察的比较细节,但是又非常重要。我越来越觉得 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++》

如果您想理解 autodecltype、型别推导、万能引用等,一定要好好读读第 1 章第 5 章,相信一定能对相关概念有全新认识。如果您对智能指针感兴趣,一定要好好读读 第 4 章,本以为自己对智能指针了解的够透彻了,再读后又有了新收获。

私信聊聊

不知道这 20 道题,您做对了几道呢?私信聊聊您对这些题目的看法吧。

BianChengNan wechat
扫描左侧二维码关注公众号,扫描右侧二维码加我个人微信:)
0%