C++ shared_ptr 虚析构函数 特殊
class a{
public:
~a(){cout<<"a"<<endl;
}
class b:public a{
public:
~b(){cout<<"b"<<endl;
}
void main(){
shared_ptr A;
{
shared_ptr B(new b());//智能指针内部,uses引用值为1
A = B; //智能指针内部,uses引用值为2,子类父类的智能指针可以一起计数
}
//离开作用域,B无效,引用值减一,为1
}
离开main作用域后,由于a中析构函数不是虚函数,在A析构时,按理说应该是执行~a()
但实际上,执行的却是b(),再由b()调用~a()
析构函数以外的普通函数,还是正常的,但是就析构函数会出现这种特殊现象,unique_ptr也正常