上面对象的拥有权从ptr1交到ptr2的时候,再使用ptr1去getMsg的时候,会出现"段错误"提示。 1#include <iostream>2#include <string>3#include <memory>45usingnamespacestd;67classTest8{9public:10Test(conststring& psg,constint&id);11~Test();12stringgetMsg();13private:14stringmsg;15intid;16};1718Te...
std::auto_ptr的基本用法:#include<memory> int main(){ //初始化方式一 std::auto_ptr<int>sp1( new int(8) ); //初始化方式二 std::auto_ptr<int>sp2; sp2.reset( new int(8) ); return 0;} 在以上代码中,智能指针sp1和sp2均持有一个在堆上分配的int对象,值都为8,这两块...
只有auto_ptr可以拿来当做另一个auto_ptr的初值,普通指针是不行的。例如: std::auto_ptr<ClassA> ptr ;//可以定义空的auto_ptr指针,对于智能指针,因为构造函数有默认值0 ptr =new ClassA; //错误, ptr =std::auto_ptr<ClassA> (new ClassA);//正确被auto_ptr对象或者auto_ptr指针赋值, 3)某函数是...
名称描述 CAutoPtr::CAutoPtr 构造函数。 CAutoPtr::~CAutoPtr 析构函数。公共方法展开表 名称描述 CAutoPtr::Attach 调用此方法以获取现有指针的所有权。 CAutoPtr::Detach 调用此方法可释放指针的所有权。 CAutoPtr::Free 调用此方法以删除由 CAutoPtr 指向的对象。公共...
C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用。 为什么要使用智能指针 智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类...
ptr = auto_ptr<map<int,int> >(new map<int,int> ()); 作用1:保证一个对象在某个时间只能被一个该种类型的智能指针所指向,就是通常所说的对象所有权。 作用2:对指向的对象自动释放的作用,详情看如下代码。 代码片段一: #include <iostream> ...
因为auto_ptr类对裸指针有唯一的控制权,需要在其拷贝函数和赋值操作符内修改形参的值(会将形参内的裸指针置为空),如果是const auto_ptr<T>&就不能修改形参内部的值了,会出现两个auto_ptr同时持有同一个裸指针,导致多次delete而出现崩溃,也违背了auto_ptr设计的初衷。
用法一: std::auto_ptr<MyClass>m_example(new MyClass()); 用法二: std::auto_ptr<MyClass>m_example; m_example.reset(new MyClass()); 用法三(指针的赋值操作): std::auto_ptr<MyClass>m_example1(new MyClass()); std::auto_ptr<MyClass>m_example2(new MyClass()); m_example2=m_examp...
1, auto_ptr类 auto_ptr是一个模板类,定义如下: template <typenameType> class auto_ptr {...}; 它存储的是一个指向Type的指针。 顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。
CAutoPtr::m_p项目 2013/02/21 本文内容 备注 要求 请参见 指针数据成员变量。 复制 T * m_p; 备注 此成员变量保存指针信息。 要求 Header: atlbase.h 请参见 参考 CAutoPtr选件类中文(简体) 你的隐私选择 主题 管理Cookie 早期版本 博客 参与 隐私 使用条款 商标 © Microsoft ...