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

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

原文地址:https://www.cnblogs.com/vhyc/p/5588155.html