c++陷阱

来源:互联网 发布:食品制造业数据 编辑:程序博客网 时间:2024/06/08 12:02
  1. 基类虚函数
    析构既是静态函数,也是虚函数,一般函数是矛盾的。

  2. 工厂模式

  3. 全局函数

namespace hhj{class widgt{    public :    static int a ;    static void init(){        std::cout << a;    }protected:    ~widgt(){}};}int hhj::widgt::a=1;
  1. 算法的恒定和变化部分。并不是动态绑定最好,基类的公共部分最好。
class Base{public:    void algorithm();protected:    virtual bool hook1() const;    virtual bool hook2() =0;};void Base::algorithm(){    if(hook1()){        hook2();    }}
  1. 重载虚拟函数
  2. 带有默认参数的虚拟函数,参数是在编译器确定的。
  3. 在构造析构函数中调用虚函数,构造是按基类调用的,所以不可以取。
  4. 覆盖,重载,隐藏,隐藏会隐藏基类所有的函数,参数可以不一样。
  5. 很少使用定长或引用数据成员,除非防止编译器生成默认赋值运算符
  6. 少用get,set,抽象不明确,对领域不专业
  7. 对象的所有权,分为adopt,shared,copy.。标准容器不会释放指针的对象。最好的方式使用只能指针,auto_ptr,shared_ptr。
  8. 运算符不要轻易重载。除非有明确的含义
  9. 编译器无法对成员函数的第一个参数应用隐试转换,二元运算符用友元函数。一元用成员运算符。
  10. ++a和a++
  11. 模版成员函数永远不应该实现复制操作
  12. 不要使用对象数组,使用容器指针。
  13. 禁止滥用继承,使用组合strategy。
  14. 避免条件代码,proxy模式。把条件放入到类型中。 如null object
0 0