effective条款15,在资源管理类中小心copying行为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class A { private : int *p; void lock(){ cout << p << "is lock" << endl; } void unlock(){ cout << p << "is non-lock" << endl; } public : A( int * a) :p(a){ lock(); } ~A(){ unlock(); } }; int main() { int a1 = 1; A a(&a1); A b(a); } |
结果
a,b两个对象,根据后构造的先析构。b析构了,然后a又析构,就会导致程序崩溃
下面放出两大办法:
1)禁止复制(copy构造函数和operator=放进private)
2)使用shared_prt类的有计数功能的指针
...........后面搞不下去,待定
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· 盘点!HelloGitHub 年度热门开源项目
· DeepSeek V3 两周使用总结
· 02现代计算机视觉入门之:什么是视频
· C#使用yield关键字提升迭代性能与效率
· 回顾我的软件开发经历(1)