当前位置 : 主页 > 编程语言 > 其它开发 >

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

来源:互联网 收集:自由互联 发布时间:2022-05-30
4月份的任务之一是《Effective C++》这本书看完,这是22年的第二本书籍阅读计划,但最终只看到第30讲,五月份继续看,这里先对前面的内容做一些总结。这篇总结第一章节的内容——

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对象构造并返回,后续调用直接返回该对象的引用。

以上。

上一篇:MySQL字段类型
下一篇:没有了
网友评论