既然打算把unique_ptr写一个系列,就要详尽一点,有些内容也许在vector的时候有个涉及,但是现在还是再谈论一番。我们要把unique_ptr看做一个类,废话了,它当然是一个类。所以这个类肯定也重载了赋值运算符,即operator=。现在就开始看看operator=在unique_ptr中的使用:
官方描述如下:move assignment (1)
unique_ptr& operat...
分类:
编程语言 时间:
2015-12-26 01:15:51
阅读次数:
254
写了很多篇关于vector的博客,其实vector很便捷,也很简单。但是很多易错的问题都是vector中的元素为智能指针所引起的。所以决定开始写一写关于智能指针的故事,尤其是unique_ptr指针的故事。这是个开始,就让我们使用std::unique_ptr代替new operator吧!还是用程序说话:#include
int main()
{
while (true...
分类:
编程语言 时间:
2015-12-24 23:56:43
阅读次数:
432
Boost智能指针——scoped_ptrboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。boost::scoped_ptr的实现和std::auto_ptr非常类似,都是利用了一个栈上的对象去管理一个堆上的对象,...
分类:
其他好文 时间:
2015-12-20 20:55:10
阅读次数:
143
C++11为我们提供了智能指针,给我们带来了很多便利的地方。那么如果把unique_ptr作为vector容器的元素呢?形式如出一辙:vector<unique_ptr > vec;但是怎么给vec添加元素呢?看下面:#include
#include
#include
using namespace std;
int main()
{...
分类:
编程语言 时间:
2015-12-18 06:56:18
阅读次数:
523
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用...
分类:
其他好文 时间:
2015-12-16 18:52:06
阅读次数:
162
//#pragmaonce
//#include<iostream>
//#include<string>
//usingnamespacestd;
//template<classT>
//classautoPtr
//{
//public:
// autoPtr(T*ptr)
// :_ptr(ptr)
// {
// }
// autoPtr(constautoPtr<T>&ptr)
// :_ptr(newT(*(ptr._ptr)))
//..
分类:
其他好文 时间:
2015-12-16 17:33:15
阅读次数:
217
1、shared_ptr:一种计数指针,被指向的对象在引用计数为0时删除。它表示共享的所有权(负责对象的删除销毁)。需要包含,下同。// 定义删除器struct Deleter{public: void operator() (Base *p) { cout p1(n...
分类:
编程语言 时间:
2015-12-06 01:47:46
阅读次数:
208
//1,release函数只是简单的转移对内存的拥有权,自己变成null,不会delete,一般在将所有权转移给别的智能指针的时候使用。具体可参加源码。例:
#include<memory>
#include<iostream>
usingnamespacestd;
classA
{
public:
A(inta):m_na(a)
{
cout<<"Acont..
分类:
其他好文 时间:
2015-12-04 21:05:40
阅读次数:
207
全局对象:启动时分配,结束时销毁局部对象:程序块内分配,程序块外销毁static对象:第一次使用分配,结束时销毁动态内存使用new来分配对象,使用delete销毁对象12.1两种智能指针#includeshared_ptr: 多个指针可以指向同一个对象unique_ptr: 独占指向的对象 weak...
分类:
其他好文 时间:
2015-11-29 23:08:55
阅读次数:
260
#include "std_lib_facilities.h"using namespace std;class Point//used for test{ public: Point(double xval,double yval):x(xval),y(yval) { } void set_x(....
分类:
编程语言 时间:
2015-11-29 11:59:15
阅读次数:
131