在复制控制函数中,只有析构函数应定义为虚函数,构造函数不能定义为虚函数。构造函数是在对象完全构造之前运行的,在构造
函数运行的时候,对象的动态类型还不完整。
虽然可以在基类中将成员函数operator=定义为虚函数,但这样做并不影响派生类中使用的赋值操作符。每个类有自己的赋值操作符,
派生类中的赋值操作符有一个与类本身类型相同的形参, 该类型必须不同于继承层次中任意其他类的赋值操作符的形参类型。
将赋值操作符设为虚函数可能会令人混淆,因为虚函数必须在基类和派生类中具有同样的形参。基类赋值操作符有一个形参是自身类
类型的引用,如果该操作符为虚函数,则每个类都将得到一个虚函数成员,该成员定义了一个基类对象的operator=。但是,对派生类而言,
这个操作符与赋值操作符是不同的。
ps:将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么用处
摘在《C++primer》第三版 构造函数和赋值操作符不是虚函数 496页