C++新特性之2学习

C++新特性之2学习,第1张

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
  1. 共享指针的应用案例,代码如下:
#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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/3002507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存