C++ 自动指针 共享指针
#include <iostream>
#include <string>
#include <memory>
class Item
{
public:
Item(std::string str):name(str){}
~Item(){std::cout<< name << " unitialize!" <<std::endl;}
void dump(){std::cout<< "I'am " << name <<std::endl;}
static Item *CreateItem(std::string str)
{
Item *pItem = new Item(str);
return pItem;
}
private:
std::string name;
}; int main()
{
Item *pi = Item::CreateItem("common ptr");
pi->dump();
delete pi; std::auto_ptr<Item> ap1(Item::CreateItem("auto ptr"));
ap1.get()->dump();
std::auto_ptr<Item> ap2 = ap1;
ap2.get()->dump(); // 此时 auto ptr 对象已经不属于 ap1 std::shared_ptr<Item> sp1(Item::CreateItem("shared ptr"));
sp1.get()->dump();
std::shared_ptr<Item> sp2 = sp1;
sp2.get()->dump();
return ;
}
C++ 自动指针 共享指针的更多相关文章
- c++ 智能指针、函数指针和指针函数
智能指针: 1.内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出. 2.内存溢出 out of me ...
- 理清C++常量指针和指针常量这团乱麻
写在前面: 与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头.其实本来没什么,这无非是const int *p与int* const p的区别, 但一涉及到起名字 ...
- C++ 必知必会:条款15 成员的指针并非指针
指向类成员的类成员的指针说是“指针”,其实是不合适的,因为他既不包含地址,其行为也不像指针 常规的指正,包含地址,对其解应用可以得到该指针包含地址所指向的对象 1: int a = 12: 2: in ...
- 不可不表的OSG智能指针之强指针与弱指针 《转载》
不可不表的OSG智能指针之强指针与弱指针 <转载> 使用OSG的人都知道OSG的内存管理方式采用了智能指针,通过智能指针的方式让OSG自己处理对象的销毁工作.在OSG中有两个智能指针类型, ...
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
1. 引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d; //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ...
- (C/C++)区别:数组与指针,指针与引用
1.数组跟指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变. 指针可以随时指向任意类型 ...
- C++的空指针、野指针和指针赋值NULL.md
1.空指针和野指针 http://blog.csdn.net/fu_zk/article/details/21030607 空指针常量 一个表示0值的整数常量,叫做空指针常量.例如:0.0L.1-1( ...
- C++语言中数组指针和指针数组彻底分析
################################# ## 基本知识 ## ...
- 《挑战30天C++入门极限》C/C++中字符指针数组及指向指针的指针的含义
C/C++中字符指针数组及指向指针的指针的含义 就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针. 先看下面的代码,注意看 ...
随机推荐
- http://www.cnblogs.com/yjmyzz/p/3941043.html
http://www.cnblogs.com/yjmyzz/p/3941043.html
- 阿里云DRDS:分布式数据库服务
最近在做阿里云相关的项目,用到阿里的很多接口服务的API,于是想把这段项目做个总结,顺便梳理下阿里云的云计算的相关知识点. DRDS:分布式数据库服务. 1.相关术语 DRDS(Distribute ...
- LightOJ1037 Agent 47(状压DP)
dp[S]表示已经消灭目标集合为S的最少射击数 dp[0]=0 dp[S]=min( dp[S'] + min( health[i] , health[i]/demage[j][i] ) ) 其中S ...
- BZOJ4297 : [PA2015]Rozstaw szyn
每个点的最优取值范围是一个区间,将叶子一层层剥去,得到一棵有根树,父亲的取值范围由儿子推得,时间复杂度$O(n\log n)$. #include<cstdio> #include< ...
- BZOJ3356 : [Usaco2004 Jan]禁闭围栏
首先将坐标离散化,考虑从左往右扫描线 碰到插入操作则插入 碰到删除操作的: 当前包含i的矩形数=y1在[1,y2[i]]之间的矩形数-y2在[1,y1[i]-1]之间的矩形数 用两棵树状数组维护即可, ...
- 洛谷 P1147 连续自然数和 Label:等差数列
题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个 ...
- 【BZOJ】1507: [NOI2003]Editor(Splay)
http://www.lydsy.com/JudgeOnline/problem.php?id=1507 当练splay模板了,发现wjmzbmr的splay写得异常简介,学习了.orzzzzzzzz ...
- 让IE下支持Html5的placeholder属性
HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等. Placeholder 是HTML5新增的另一个属性,当input或者textarea设 ...
- [转] - 经典SQL语句大全
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- js不能执行的几个小白错误
1.如果使用jquery,而没有将js代码写在$(function(){}):里边,没等dom全部加载完,在执行时出现错误 2.如果感觉都写对了却没有执行,那么可能是在想要执行的函数前有一加载就能执行 ...