在函数模板中使用智能指针时,可能会希望根据指针的类型推导出指针引用的对象类型作为模板参数,于是写出以下代码: shared_ptr<decltype(*objPtr)>(objPtr); 一眼看上去似乎是正确的,然而实际上隐藏着一个问题会导致错误,这要从decltype()推断出的类型说起。 dec ...
分类:
编程语言 时间:
2020-03-18 11:18:27
阅读次数:
95
在使用基本指针类型时,因为要手动释放指针指向的内存,常常容易造成内存泄漏,特别是异常分支很多的情况下。而智能指针类型就是将基本指针类型封装成模板类,以便更好地管理内存。 智能指针都包含一个explicit构造函数,因此基本指针类型不能隐式转换成智能指针,需要显式调用。 shared_ptr<doub ...
分类:
编程语言 时间:
2020-03-05 22:22:30
阅读次数:
116
```cpp #include #include static void interfaceOfSharedPtr(); int main(void) { interfaceOfSharedPtr(); return 0; } class Object { public: Object(int id... ...
分类:
编程语言 时间:
2020-02-24 21:06:37
阅读次数:
78
```cpp #include #include #include //auto ptr //shared_ptr //unique_ptr //weak_ptr class Parent; //采用前置声明 using ParentPtr = std::shared_ptr; typedef st... ...
分类:
编程语言 时间:
2020-02-24 21:03:42
阅读次数:
90
```cpp #include #include #include /* //this //调用了两次析构函数, ParentPtr p(this); //智能指针出了作用域后就delete this ,析构了 //所以错了,为了解决这个问题,就需要自身的类继承于 std::enable_share... ...
分类:
编程语言 时间:
2020-02-24 21:03:10
阅读次数:
121
```cpp #include #include #include class Object; typedef std::unique_ptr UniqueObjectPtr; using ObjectPtr = std::shared_ptr; void print(const UniqueObj... ...
分类:
编程语言 时间:
2020-02-24 20:24:28
阅读次数:
73
```cpp #include #include #include //智能指针总结: /* */ void sharedPtrNotice(); class Parent; typedef std::shared_ptr ParentPtr; typedef std::weak_ptr WeakP... ...
分类:
编程语言 时间:
2020-02-24 20:10:34
阅读次数:
106
C++ 11提供的智能指针有:shared_ptr、unique_ptr、weak_ptr。在 头文件 memory 中。 一、new delete 直接管理内存 1、初始化 string * ps = new string // 初始换为一个空string int * pi = new int ; ...
分类:
编程语言 时间:
2020-01-28 10:49:44
阅读次数:
99
0. 1. std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Several shared_ptr objects may own the same obj ...
分类:
编程语言 时间:
2020-01-21 00:40:14
阅读次数:
103
有个需求需要将二进制istream上传到s3上暂存,但苦于没能直接找到接口,官方提供的设置数据块的接口如下: inline void SetBody(const std::shared_ptr<Aws::IOStream>& body) { m_bodyStream = body; } 这个Aws: ...
分类:
Web程序 时间:
2020-01-17 20:49:12
阅读次数:
166