Effective C++
effective c++
如果阻止拷贝构造?
class Uncopyable{ private: Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&); };
想要阻止拷贝的子类继承uncopyable类,base class的拷贝构造是private函数会阻止子类进行拷贝构造。
为多态类申明virtual析构函数
- 给 base classes 一个 virtual 析构函数",这个规则只适用于 polymorphic (带多 态性质的) base classes 身上
- Classes 的设计目的如果不是作为 base classes 使用,或不是为了具备多态性(polymorphically) ,就不该声明 virtual析构函数。
- 绝不在构造和析构函数中调用virtual函数
- 在base class构造期间, virtual函数不是 virtual函数。
- 对象在derived class构造函数开始执行前不会成为一个derived class对象。换句话说,在 base class 构造和析构期间调用的 virtual 函数不可下降至 derived classes。
令赋值操作符返回一个reference to *this。
operator=中处理自我赋值
Widget& Widget::operator=(const Widget& rhs){ //添加证同测试: delete pb; pb = new Bitmap(*rhs.pb); return *this; }
另一种写法:
Widget& Widget::operator=(const Widget& rhs){ Bitmap* pOrig = pb; pb = new Bitmap(*rhs.pb); delete pOrig; return *this; }
- copying函数应该确保复制“对象内所有成员变量”及“所有base class成分”,不要尝试以某个函数实现另一个copying函数。应该将共同机能放进第三个函数中,并由两个copying函数共同承担。
c++ 文章被收录于专栏
算法工程师上线要写c++,所以要开这个专栏