有些API的参数是就是要求是资源的指针,这个时候直接传递智能指针的对象肯定是不可以的,因为它是一个对象,API要求的是智能指针内部原生指针的类型,好在智能指针可以通过get方法得到原生指针。而且几乎所有的智能指针都重载了指针取值操作符(*和->)。
RAII class并不是为了封装某物而存在,它的存在可以是为了确保一个特殊行为——资源释放在必要的时候会发生,因此在里面添加返回原始对象指针的方法并不是什么不合理的做法。
除了使用智能指针时这种获取原始对象指针的方法,还可以通过在资源管理类中使用添加get函数的方法获取原始资源的指针。