让接口不易被误用

让接口不易被误用注意点一:

class Date{

           public:

                     Date(int month,int day,int year);

                    ...

}

容易犯两个错误:

Date(30,3,2012) //应该是3,30,2012

Date(2,30,2012)//错误的日期

为了防止类似的错误可以考虑限定参数类型

class Month{

public:

    static Month Jan(){return Month(1)};

    static Month Feb(){return Month(2)};

    ...

private:

    explicit Month(int a); //explicit 用来抑制隐式转换

    ...

}

Date(Month:Jan(),Day(30),Year(2012));


让接口不易被误用注意点二:

Investment * createInvestment();

为避免资源泄露,createInvestment返回的指针最终必须被删除,但那至少开启了两个客户错误的机会:没有删除指针,或删除同一个指针超过一次。

解决办法:将createInvestment的返回值存储于一个智能指针如auto_ptr、shared_ptr内,因而将delete责任推给智能指针。但万一客户忘了使用智能指针肿么办?许多时候,较佳接口的设计原则是先发制人,就令factory函数返回一个智能指针。(选shared_ptr更好,因为此自能指针可以绑定资源释放函数,防止用delete代替特定的资源释放函数,最常见的shared_ptr的实现品来自boost)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值