读书笔记《Effective c++》 条款18 让接口容易被正确使用,不易被误用


a.提供给客户的接口,最好能在编译器就检查出错误。例如给参数限定有限制的类型。


b.自定义类型的接口尽量与内置类型兼容,降低客户理解成本和出错风险。


c.接口如果要求客户记住某件事,那么这个接口就有着“不正确使用”的倾向,因为客户很可能会忘记那件事。

  例如,指向数组的只能指针的例子,下面的写法有两个要点:

  1.返回的是智能指针,不需要客户去delete。

  2.返回的智能指针带了特定的delete参数,保证会正常释放该指针。

class Test
{
	// 有动态申请内存操作
};

std::shared_ptr<Test> test()
{
	std::shared_ptr<Test> p{ new Test[10], std::default_delete<Test[]>() };
	return p;
}

int main()
{
	std::shared_ptr<Test> p{ test() };

	return 0;
}


结论:

  a.好的接口很容易被正确使用,不容易被误用。

  b.“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。

  c.“阻止误用”的把那包括建立新的类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。

  d.shared_prt支持定制删除器。这可防范跨DLL问题,可被用来自动解除互斥锁。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值