读书感想-C++语言99个常见编程错误(C++ Gotchas Avoiding Common Problems in Coding and Design)

看到了这本书,就随手拿来读一下。实际上,这本书讲的东西非常深,有些知识点很偏,有些讲解很晦涩。

其中所讲到的常见编程错误,有一些是C语言的遗留影响(比如使用空指针和类型转换,而不使用多态),有一些是临时实现功能所增加的补丁造成的,有一些是不了解现成的标准库或者算法而自己实现功能造成的效率、准确性或者安全性降低(重复造轮子)。在实际工作中,即使是在经验丰富的工程师所编写的代码里,也常常会见到类似的错误。我自己就在工作中改进了一些做法。


记录一些笔记如下:

1、位屏蔽算法:

typedef unsigned short Bits;

inline Bits repeaded(Bits b, Bits m){

return b & m & (b & m) - 1;

}

...

if(repeaded(options, 0XFF00))

cerr << "Too many options selected.";

2、成员类型转换符:

class C{

operator int *() const;

};

3、常用的与C相关缩写

POD-Plain old data, a C struct-和C语言兼容的结构

POF-Plain old function, a C function-和C语言兼容的函数

RVO-Return value optimization-返回值优化

NRV-Named RVO-具名的返回值优化

Ctor-Constructor-构造函数

Dtor-Destructor-析构函数

4、注意运算符优先级;不要过度重载运算符

5、函数对象封装计数:

class ExecBump{

public:

void operator()(void (*func)()){

func();

++count_;

}

int get_count(){

return count_;

}

private:

static int count_;

};

6、常用的跨平台写法:

#ifdef PLATFORM_A

...

#endif

这种写法并不是平台无关的,只是多平台相关的。

7、尽量不要用强制静态类型转换;尽量不要用在类中增加类型标识信息的方法来处理。优先采用多态设计。尽量保持基类对派生类一无所知。

8、不要过度使用异常。

9、常用的锁结构:

class MyLock{

public:

MyLock(){ lock(); }

~MyLock(){ unlock(); }

};

void doSth(){

MyLock my_lock;

...

}

这样在离开作用域时,my_lock析构,一定会解锁。

10、构造函数和析构函数中不要调用虚函数。不要有虚赋值运算符存在。

11、构造函数不能为虚;析构函数最好为虚。

12、使用mutable修饰词。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,554评论 1 51
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,853评论 0 9
  • 第一章 计算机与C++编程简介 C++程序6个阶段编程 ->预处理->编译->连接->装入->执行1.程序在编译器...
    rogertan30阅读 4,187评论 0 1
  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 2,918评论 0 13
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,065评论 0 14