何时调用:
1,如果变量没有声明过,那么将会调用复制构造函数。如:
A a;
A a2=a;//调用复制构造函数将a复制到a2.
2,如果变量已经声明过,将会调用赋值操作符。
A a;
A a2;
a2=a;//调用赋值操作符将a的值复制到a2
备注:不管是复制构造函数还是赋值操作符,都要注意类成员存在指针的情况。这种情况下,如果采用浅复制那么应该使用引用计数;当然可以采用深复制方式使每个对象拥有独立的副本,不过这样消耗内存和时间。
3,关于析构函数何时为虚拟的问题。一般是在拥有子类的父类中,需要将其析构函数声明为虚拟的,以便使子类的析构函数得到调用。