Effective C++ .15,16获取原始资源和成对使用同类型new和delete

15. 智能指针可以通过get操作

#include <iostream>
#include <cstdlib>
#include <memory>

using namespace std;

class Orange {
private:
    int weight;
public:
    Orange(int w) : weight(w) {}
    int getWeight() {return weight;}
};

int main() {
    shared_ptr<Orange> p(new Orange(123));
    Orange* ptr = p.get();
    ptr++;
    ptr--;
    cout<<ptr->getWeight()<<endl;
    return 0;
}

16. new[] 对应用delete[]

时间: 2024-11-08 20:39:25

Effective C++ .15,16获取原始资源和成对使用同类型new和delete的相关文章

EC笔记:第3部分:15、对原始资源的访问

使用对象来管理资源,可以避免因个人疏忽带来的一些低级错误,但是不是每件事都是称心如意的. 一些函数依然使用原始的资源对象,那么我们就需要为这些函数提供一个接口,让他们可以获取到原始对象. 继续拿13节的智能指针说事,先上代码: //SFAutoPtr.h #pragma once template<typename T> class SFAutoPtr { private: T* pointer; //对象指针 size_t *ref_count; //引用计数 void dec() { //

android学习笔记39——使用原始资源

原始资源 android中没有专门提供管理支持的类型文件,都被称为原始资源.例如:声音资源... android原始资源存放位置: 1.res/raw,android SDK会处理该目录下的原始资源,会在R清单中生成唯一索引 2./assets/,该目录下的资源是更彻底的原始资源.android通过AssetManager来管理该目录下的原始资源 注意:原始资源通过SDK生成的唯一索引的使用方式同其他资源使用方式一致.EG:R.raw.filename/@raw.filename AssetMa

尚硅谷公开课--struts2--3--struts2中获取web资源的几种方式

在struts2中,可以在JavaBean类中写公用的返回值为String类型的方法来响应页面上的请求,也可以在此方法中获取web资源,如:request,application,session,parameters等. 一.通过ActionContext获取 步骤: 1.获取ActionContext对象 通过ActionContext.getContext()获取一个ActionContext的实例 2.获取web资源对应胡Map 此Map类型为Map<String,Object>.获取方

Effective C++ 条款15、16 在资源管理类中提供对原始资源的访问||成对使用new 与 delete要采取相同形式

1.在资源管理类中提供对原始资源的访问     前几个条款很棒,它们是对抗资源泄露的壁垒,但很多APIs直接指向 资源,这个时候,我们需要直接访问原始资源.     这里,有两种方法解决上述问题,我们可将RAII对象转换为原始资源.通过 显式转换与隐式转换.     通常,tr1:: shared_ptr 和 auto_ptr 都提供一个get成员函数,用来执行显式转换,也就是返回智能指针内部的原始指针的复件.因为它也重载了指针取值操作符* –>.当然也可以通过隐式转换为底部原始指针.     

Effective C++:条款15:在资源管理类提供对原始资源的访问

(一) 下面代码: tr1::shared_ptr<Investment> pInv(createInvestment()); int daysHeld(const Investment* pi); 我们要调用daysHeld函数的话,就必须传递一个Investment指针,但是我们现在只有pInv对象,所以我们需要一个函数可将RAII class(本例为tr1::shared_ptr)对象转换为其所内含之原始资源(本例). 有两种方法,一种是显式转换,另外一种是隐式转换. (二)显式转换 t

Item 15:资源管理类需要提供对原始资源的访问 Effective C++笔记

Item 15: Provide access to raw resources in resource-managing classes. 在一个完美的设计中,所有的资源访问都应通过资源管理对象来进行,资源泄漏被完美地克服.然而世界是不完美的, 很多API会直接操作资源,尤其是一些C语言的API.总之,你会时不时地发现有需要直接访问资源, 所以资源管理对象需要提供对原始资源访问.获取资源的方式有两类:隐式地获取和显式地获取. 通常来讲,显式的资源获取会更好,它最小化了无意中进行类型转换的机会.

条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)

NOTE: 1.APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个“取得其所管理之资源”的办法. 2.对原始资源的访问可能经由显示转换或隐式转换.一般而言显示转换比较安全,但隐式转换对客户比较方便.

《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6  获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 假设你有如图8-7所示的模型.你正在离线环境下工作,你想应用在获取客户端修改之前,使用Where从句和FirstDefault()方法从数据库中获取原始对象. 图8-7.包含一个单独实体Item的模型 按代码清单8-9的方式,在获取实体之后,使用新值更新实体并将其保存到数据库中. 代码清单8-9. 获取最新

java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源

实现该方法需要导入一些jar包 可以去一下地址下载: http://pan.baidu.com/s/1hqrJF7m /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1.通过path设定传送方式 * 2.创建客户端 * 3.得到输入流 * 4.读取流准备工作 * 5.读取并写入 * @throws IOException * @throws ClientProtocolException * */ 1 public static String getHttpResul