effective c++ 条款 9 10 11 12

条款9:绝对不在构造和析构函数运行时调用virtual函数

在base class构造期间virtual函数绝不会下降到derived class阶层,取而代之的是对象调用的是base class里面的函数。所以,此时的虚函数不能作为虚函数来看。

因为派生类在调用基类的构造函数的时候,它本身被视作为base类所以不会有正确的函数被调用。

条款10:使operator= 返回一个reference to*this

这是个协议最好遵守,如果不遵守也一样可以编译通过,但是有一些stl库的类在使用的时候需要按照这一标准。

条款11:在operator=中处理 自我赋值

自我赋值发生在变量的值赋给变量自身的时候。但是如果一个变量两个对象如果指向的是一个位置,delete掉一个另一个也会变成野指针。所以这种情况就比较危险。一般会在赋值之前进行证同测试。

条款12:复制对象的时候勿忘记其每一个成分

基类的拷贝构造函数有时会拷贝一些私有的内部成员变量。而且如果不实用virtual copy的话就会导致局部拷贝,只拷贝了子类里面的成员但是对于父类的成员变量没有完全拷贝进来。

猜你喜欢

转载自blog.csdn.net/weixin_42427338/article/details/86613691
今日推荐