zoukankan      html  css  js  c++  java
  • 条款15:在资源管理类中提供对原始资源的访问

    即使我们对一些资源使用了RAII类进行管理,但是还是不能避免很多的API需要你去提供原始的资源来对他们进行调用:
    例如对于条款13中的例子来说:

    1 shardPtr<Investment> pInv(createInvestment);
    2 //看看下面这个函数
    3 int daysHold(const Investment * pi);//这里我们所需要的就是提供原始的资源

    所以说类似shared_ptr这样的RAII类都提供一个get函数,让用户可以自由的取得内部真正的资源(的副本),通过这个get函数上面API的使用可能就变成了下面这样:

    ...
    int ans = daysHold(pInv.get());
    如果觉得get可能使用起来非常的的别扭的话,甚至可以提供一个operator()来进行隐式的转换,但是隐式的转换过程中可能会产生意想不到的错误,所以到底是使用隐式的operator()还是get函数就见仁见智了,
    PS:这里可不可以使用explicit operator(),这样是不是不get函数稍微好一点,而且安全性也较高。
     
    最后一句说了:get可能还是要好一点,良好的class的设计准则是隐藏客户不需要看的部分,而且又将用户所有需要的东西都准备妥当,就像这里的get函数一样
  • 相关阅读:
    查看linux服务器CPU相关
    Innobackupex(xtrabackup)物理备份
    给xen虚拟机添加硬盘分区格式化
    快速做ssh免密钥登陆
    windows基本命令大全
    linux系统下python升级安装
    快速安装Java环境
    「十二省联考 2019」骗分过样例
    「十二省联考 2019」皮配
    「SNOI2019」积木
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4856730.html
Copyright © 2011-2022 走看看