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++_条款十五:在资源类管理类中提供对原始资源的访问

Effective C++ 6.继承与面向对象设计

《Effective C#》条款8:确保0为值类型的有效状态

《More Effective C++》总结笔记——异常

Effective C++ 条款45

《Effective C++ 》学习笔记——条款11