美文网首页程序员
读书感想-C++语言99个常见编程错误(C++ Gotchas

读书感想-C++语言99个常见编程错误(C++ Gotchas

作者: 至高无上的微笑 | 来源:发表于2017-11-12 21:57 被阅读0次

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

    其中所讲到的常见编程错误,有一些是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++语言99个常见编程错误(C++ Gotchas

        本文链接:https://www.haomeiwen.com/subject/lcnomxtx.html