您的位置:首页 > 编程语言 > C语言/C++

《Effective C++》阅读总结(一):让自己习惯C++

2022-05-04 21:46 1541 查看

4月份的任务之一是《Effective C++》这本书看完,这是22年的第二本书籍阅读计划,但最终只看到第30讲,五月份继续看,这里先对前面的内容做一些总结。这篇总结第一章节的内容——让自己习惯C++

  • 01:视C++为一个语言联邦 这个条款的意思是,c包含很多内容,是一个支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言,我们可将C语言看作是多个次语言的联邦(结合体),我们只需要单独去遵守每个次语言的守则即可,不同次语言可能差别较大,但不会相互影响。主要的次语言有以下几个: ① C语言。C作为C语言的衍生,完全兼容C的编程规范。 ② 面向对象的C。这是C区别于C语言单独发展出来的部分,包含类对象的封装、继承、多态等等这些内容。 ③ 模板C。这是C泛型编程部分,即模板元编程。这是高阶内容了,目前还处于使用阶段,实践中用的也较少。 ④ STL(标准模板库)。C STL是非常重要的,灵活使用STL提供的容器和算法能节省你大量的时间。 以上总的来说,模板C++接触的较少,其他三部分是需要熟练掌握的。

  • 02:尽量以const, enum, inline替换#define 预定义宏的问题在于它在预处理阶段被解析,这样编译器无法发现它存在的问题,使用const能达到同样效果的时候,比如单纯的常量,尽量使用const。对于形似函数的宏,使用inline 更好。这样方便在编译期就能发现问题所在,对应的符号也能正确被解析到符号表内。

  • 03:尽可能使用const 这个条款的意思是,我们需要给那些不应该被修改的变量、对象或函数添加const属性,这样能避免不期望的修改发生,同时编译器也可以侦测出非法修改的错误。此外,当non-const和const成员函数处理逻辑等价时,应该让non-const成员函数调用const成员函数,以避免代码重复。

  • 04:确定对象被使用前已被初始化 ①对内置类型进行手动初始化,例如int,float等等 ②构造函数尽量使用成员初始化列表而不是函数体内赋值,以减少拷贝次数; ③为避免“跨编译单元之初始化次序问题”,用local static对象替换non-local static对象,总之就是不要去访问一个你不确定已经被初始化的non-local static对象,而是将获取该对象的方式改为访问一个函数,这个函数在被第一次调用时进行local static对象构造并返回,后续调用直接返回该对象的引用。

以上。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: