《Effective C++》条款15、资源管理类提供原始资源的访问

显示转换

在我们的资源管理类中,有时我们需要使用到我们的原始类,所以我们需要在资源管理类中提供对原始资源的访问接口,在智能指针中,都提供了一个get()函数,这个函数使得我们能够获得智能指针内部封装的原始指针,同时智能指针也重载了*运算符和->运算符使得我们可以访问内部指针指向的资源。
如果我们在我们自己的资源管理类中也同样的封装了一个原始类,同样的,我们需要提供我们的原始资源,对于一个字体的管理类。我们同样可以提供一个get()函数返回我们的原始资源。
在这里插入图片描述
如果想要获得FontHandle类型的 f 对象,则我们写一个get函数返回 成员 f;
在这里插入图片描述

隐式函数转换

在这里插入图片描述
上述的隐式函数转换是一种函数语法格式,成员函数的一种,用于将本类型的函数转换成为其他类型,其中的operator相当于一个标志符,说明该是一个隐式函数转换。

operator 目标类型() {
    return 转换类型对象;
}

使用方式:
在这里插入图片描述f表示获取调用隐式类型转换。

但是当采用隐式类型转换获取底层的值将会增加出错的几率。

在这里插入图片描述这将导致两个对象管理同一资源,当其中一个对象将资源释放,则另一个资源将会悬空。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值