c 语言99个常见编程错误,读书感想-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修饰词。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值