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也正常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具