The logic behind array subscript access

对于数组而言,下标运算是随机读写的一种方式,也是最常用的方式。但是有很多教材(尤其是国内教材)一上来就说数组名就是指针,这是不对的。而且对于数组的下标访问背后是有一套规则的,熟悉这些规则可以在一些复杂语义的情况下分析出代码的实际含义。

阅读全文 »

Wrap an override member function pointer

使用变长参数模板和lambda(或者使用generic lambda)来裹一层重载的成员函数指针,从而方便使用(bind绑定或者其他需要重载的成员函数指针的地方)。
关于成员函数指针的更多介绍请看我的另一篇文章:C++中指向类成员的指针并非指针

阅读全文 »

Some thoughts on reading

如何对一门不熟悉的领域或者书籍划定其中最重要的20%?如何划定细枝末节?
之前读书和学习中没有深入思考过这些方法论的东西,觉得方法论只是空谈,但是现在觉得掌握一个合适的技巧如有利刃在手,披荆斩棘方可游刃有余。

阅读全文 »

Reading TC++PL/C++Primer/ISO C++

花了一个月的时间读完了TC++PL4E,因为我之前读过C++ Primer,C++大部分的语法内容都已了解,所以读的速度还是比较快的,但是通过组合阅读C++标准也发现了很多C++中我原本不知道的东西,从标准和C++之父的视角来看C++确实是足够全面了,由此来对比一下C++ Primer、TC++PL4E和ISO C++文档。

阅读全文 »

POD is Plain Old Data(普通旧数据).在C++中是指能被“仅当作数据”处理的对象,程序员无暇顾及类布局的复杂性以及用户自定义的构造、拷贝和移动语义。

阅读全文 »

TC++PL4E Chinese and English Edition Errata

最近在读The C++ Programming Language Fourth Edition(简称TC++PL4E),由于我入的实体书是中译本(原版好贵),所以我是对照着英文版PDF看的,发现了一些原版和中译本中的勘误,还有一些我觉得书中歧义的地方,查阅标准(ISO/IEC 14882:2014(E))之后的定义也一并贴出,汇总在这里列出来。

阅读全文 »

Some excerpts from the C/C++ standard

C/C++的很多资料网上数不胜数,但是经常会遇到看了一些文章资料后,我觉得作者自己都没彻底明白到底写的是什么(回头看看我以前写的文章也是,那时的眼光太片面和浅显了)。
所以对于C/C++的东西我觉得还是要直接来翻标准文档才行,因为标准是不会出现歧义的。不能盲目地只是在网上搜寻并相信别人二次消化过的资料。
我认为对于C/C++语言特性的知识,查阅这四份文档就足够了(点击即可在线预览或下载):

之所以C语言标准没有依据最新的C11标准是因为目前的C++标准(C++14)的Normative references的C部分是ISO/IEC 9899:1999,使用TCPL和TC++PL可以作为C/C++标准的应用性描述,可以相互印证。
更多的关于C++Normative references的内容可参照ISO/IEC 14882:2014(E) §1.2 Normative references.
我会逐渐把一些常见的会让人觉得模棱两可的语言特性查阅的标准规范摘录到这里来,可以保证写出的东西在标准文档中都有依据。

阅读全文 »

Some interesting questions and analysis of CppQuiz

CppQuiz is a simple online quiz that you can use to test your knowledge of the C++ programming language.
很有意思,今天刷了几道随手写点东西出来,以后有空再刷刷都放到这里来好了。其实CppQuiz有很多题都可以从《深度探索C++对象模型》中找到原因…如果有很多题不会做我建议还是买一本《深度探索C++对象模型》认真看一遍吧!
另外,我尽量在解答题的同时会在C++标准(ISO/IEC 14882:2014)中找到相关的描述。

阅读全文 »