1)unique(独占指针)的学习,代码如下:
#include
#include //此头文件必须包含
using namespace std;
int main(void)
{
unique_ptr<int> ptr(new int(44));
cout<<*ptr<<endl;
unique_ptr<int> ptr2 = std::move(ptr);
cout<<*ptr2<<endl;
ptr.reset(); //释放内存 相当于ptr = nullptr
ptr2.reset();
unique_ptr<int> ptr3(new int(55));
ptr3.reset(new int(234)); //绑定动态对象
cout<<*ptr3<<endl;
return 0;
}
输出结果:
44
44
234
- 共享指针的应用案例,代码如下:
#include
#include
using namespace std;
int main(void)
{
shared_ptr<int> ptr(new int(45));
cout<<"ptr count is: "<<ptr.use_count()<<endl;
shared_ptr<int> ptr2(ptr);
cout<<"ptr count is: "<<ptr.use_count()<<endl; //什么叫共享指针,这就叫共享指针
cout<<"ptr2 count is: "<<ptr2.use_count()<<endl;
return 0;
}
输出结果:
ptr count is: 1
ptr count is: 2
ptr2 count is: 2
3)weak_ptr的使用
1)weak _ptr的使用方法:weak_ptr主要是为了协助shared_ptr的使用;
2)weak_ptr并不是资源的所有者,所以不能直接使用资源,可以通过shared_ptr获得共享资源的s所有权;
代码如下:
#include
#include
using namespace std;
int main(void)
{
shared_ptr<int> ptr(new int(45));
shared_ptr<int> ptr2(ptr);
weak_ptr<int> weakP = ptr; //弱指针的使用方法
cout<<*ptr2<<endl;
cout<<*ptr<<endl;
//cout<<*weakP<
cout<<"weakP count is: "<<weakP.use_count()<<endl; //注意:输出不是3,而是2
return 0;
}
输出结果:
45
45
ptr count is: 2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)