C/C++智能指针

在堆区内开辟的空间,由程序员手动开辟,手动释放,为了保证用 new 动态分配的内存空间在程序执行后都能被释放是一件麻烦的事情,因此采用智能指针的方式

智能指针是类模板,在栈上创建智能指针对象;

把普通指针交给智能指针对象;

智能指针过期时,调用析构函数释放普通指针的内存

#include <iostream>
#include <vector>
#include <memory>
using namespace std;
class AA
{
public:
    string m_name; 
    AA(){cout << m_name < < "调用构造函数AA\n";}
    AA(const string & name) : m_name(name)
    { 
        cout << "调用构造函数AA"<< m_name << endl;
    }
    ~AA() { cout << "调用了析构函数~AA" << m_name <<endl;}


};
int main()
{
    //    初始化有三种方法
    //第一种:

    AA* p = new AA("西施");
    unique_ptr<AA>pt1(p);      //让智能指针pt1来管理对象p,不需要自己写delete p;

    //第二种:
      
    unique_ptr<AA>pt2(new p("西施"));

    //第三种

     unique_ptr<AA>pt3 = make_unique<AA>("西施");  //c++14标准
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值