条款13 以对象管理资源
2015-09-04 23:52
405 查看
#include<iostream> #include<string> #include<memory>//智能指针 using namespace std; class Resouce{ public: Resouce(){ cout << "Resouce()" << endl; } ~Resouce(){ cout << "~Resouce()" << endl; } void dosomething(){ cout << "dosomething" << endl; } }; class Base{ public: void fun(){ auto_ptr<Resouce>raii(new Resouce);/*RAII 资源取得时机便是初始化时机*/ } private: }; class Derived :public Base{ public: //.. Derived(){} private: int m_i; }; void test(){ auto_ptr<Resouce>r1(new Resouce); auto_ptr<Resouce>r2(new Resouce); r2 = r1; //r1->dosomething(); 转移语义 r1此时指向了空 shared_ptr<Resouce>r3(new Resouce); shared_ptr<Resouce>r4(new Resouce); r3 = r4; r4->dosomething();//这样没有问题 // auto_ptr<Resouce>r5(new Resouce[10]); // shared_ptr<Resouce>r6(new Resouce[10]); //智能指针因为vector string的存在并没有针对于动态数组的设计,但是boost::scoped_array shared_array classes 有提供 } int main(){ Base b; b.fun(); test(); system("pause"); return 0; }
相关文章推荐
- 1 Preliminaries
- hdu5164 Matching on Array map实现ac自动机
- 深夜一个有趣的话题——冲离技术舒适区
- webdriver控制浏览器滚动条 selenium_python
- 搭建gerrit服务器(apache&nginx反向代理方式)
- Injecting Spring Beans into Java Servlets
- IOS开发UI—纯代码实现控件及其基本属性
- 贪心算法---礼堂的安排
- Java之工具-------Junit自己的测试工具MyJUnit
- 教你如何下载百度网盘已失效资源链接
- 我的Logo设计简史
- 开源知识库管理系统选型 centos6.4 搭建knowlededgeroot-1.0.4知识库平台
- Ubuntu下安装Packet Tracer5.3过程
- cart2pol函数
- Atitit.swt 线程调用ui控件的方法
- 如何在Windows7操作系统下使用g++命令
- Caffe学习:使用pycaffe绘制loss、accuracy曲线
- [iOS]关于视频方向的若干问题
- 自定义UIActionSheet
- mac下使用navicat连接mysql时遇到的问题