effective条款15,在资源管理类中小心copying行为
Posted Kooing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了effective条款15,在资源管理类中小心copying行为相关的知识,希望对你有一定的参考价值。
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类的有计数功能的指针
...........后面搞不下去,待定
以上是关于effective条款15,在资源管理类中小心copying行为的主要内容,如果未能解决你的问题,请参考以下文章
读书笔记_Effective_C++_条款十五:在资源类管理类中提供对原始资源的访问