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类的有计数功能的指针

...........后面搞不下去,待定

 

posted on   Kooing  阅读(135)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
阅读排行:
· 盘点!HelloGitHub 年度热门开源项目
· DeepSeek V3 两周使用总结
· 02现代计算机视觉入门之:什么是视频
· C#使用yield关键字提升迭代性能与效率
· 回顾我的软件开发经历(1)

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示