C++智能指针——弱指针

弱指针:用来解决智能指针的循环引用的问题。weak_ptr是为了配合shared_ptr而引入的一种智能指针,它指向一个由shared_ptr管理的对象而不影响所指对象的生命周期,也就是,将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。不论是否有weak_ptr指向,一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放。

class Ftest :public enable_shared_from_this<Ftest>
{
public:
	void init() {}

};


int main()
{
	Ftest* test = new Ftest();

	shared_ptr<Ftest> testptr = make_shared<Ftest>(*test);

	Ftest* test1 = testptr.get();//转成裸指针

	shared_ptr<Ftest> testptr1 = test1->shared_from_this();//转换成智能指针


	weak_ptr<Ftest> testweak = testptr1;
	weak_ptr<Ftest> testweak1 = testptr1;
	weak_ptr<Ftest> testweak2 = testptr1;
	weak_ptr<Ftest> testweak3 = testptr1;
	weak_ptr<Ftest> testweak4 = testptr1;

	cout << testweak.use_count() << endl;//不会增加引用计数


	testweak.lock();//转成共享指针
	if (testweak.use_count()==0)//如果引用计数为0的话弱指针就失效了
	{

	}

	if (testweak.expired())//判断弱指针是否失效
	{

	}

	return 0;
}

你可能感兴趣的:(C++智能指针,c++,开发语言)