Effective C++第四章读后感

设计与声明
条款18:让借口容易被正确使用,不易被误用
            明智而审慎地导入新类型对预防接口被误用有神奇疗效。一旦正确的类型就定位,限制其值有时候是通情达理。例如一年只有12月份,所以month应该反映这一事实。办法之一是   利用enum表现月份,但enums不具备我们希望拥有的类型安全性,例如enums可被拿来当一个ints使用。比较安 全的解法是预先定义所有有效的month,再定义一个私有构造函数,阻止其他非法的月份。
            预防另一办法是限制类型内什么事可做,什么事不能做。常见的限制是加上const;尽量令你的types与内置的类型也一致。为避免资源泄露,factory函数直接返回一个智能指针。
条款19:设计class犹如设计type
                新type对象如何创建和销毁?
                对象的初始化和赋值有什么区别?
                新type的对象如果被传值,意味着什么?
                什么是新type的合法值?
                你的新type需要配合某个继承图系吗?
条款20:宁以常量引用替换传值。
                如果有个内置类型,传值往往比传引用效率高一些
条款21;必须返回对象时,别妄想返回其引用。
             绝不要返回指针或引用指向一个本地栈对象。
条款22:将成员变量声明为private
t条款23:宁以非成员、非友元替换成员函数。
条款24:若所有参数皆需类型转换,请为此采用非成员函数。
条款25:考虑写出一个不抛出异常的swap函数。
            如果swap的缺省实现在可接受的效率,就不必改变。
            1.提供一个public swap成员函数,让他高效的置换类型。绝不该抛出异常。
            2.在自己的class所在的命名空间内提供一个非成员swap函数,让他调用上述函数。
            3.为自己的类特化std::swap.并令它调用自己的swap成员函数。
            最后,如果你调用swap,请确定包含一个using 声明式,以便让std::swap在自己的函数内曝光,然后不加任何namespace修饰符,赤裸裸的调用swap.
            
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务