effective c++ 条款18:让接口容易被正确使用,不易被误用

本文探讨了如何设计易于正确使用且不易被误用的接口。通过示例介绍了促进正确使用及阻止误用的方法,如类型安全、限制操作及消除资源管理责任等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记住:

  • 好的接口容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。
  • 促进正确使用的办法包括接口的一致性,以及与内置类型的行为兼容。
  • 阻止误用的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。
  • tr1::shared_ptr支持定制型删除器。这可被用来自动解除互斥锁等等。

 

class Data {
public:
    Date(int month, int day, int year);
};

Date d(30, 3, 1995); //错误,应该是3,30

struct Day {
    explicit Day(int d): val(d) {}
    int val;
};

struct Month {
    explicit Month(int m) : val(m) {}
    int val;
};

struct Year {
    explicit Year(int y) : val(y) {}
    int val;
};

class Date {
public:
    Date(const Month& m, const Day& d, const Year& y);
    ...
};
Date d(30, 3, 1995); //错误,不正确的数据类型
Date d(Day(30), Month(3), Year(1995)); //错误,不正确的数据类型
Date d(Month(3), Day(30), Year(1995)); //正确

 

class Month {
public:
    static Month Jan() { return Month(1); }
    static Month Feb() { return Month(2); }
    ...
private:
    explicit Month(int m);
};

Date d(Month::Mar(), Day(30), Year(1995));

 

转载于:https://www.cnblogs.com/pfsi/p/9218061.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值