18. 让接口容易被正确使用,不易被误用
1)接口(包括function接口、class接口、template接口等)是客户与自己写的代码互动的手段。理想接口的标准:应该是客户用该接口没有获得预期行为,那么该代码不该通过编译。
2)设计一个理想接口首先必须考虑客户可能做出什么样的错误;其次限制类型内什么事可做,什么事不可做。(比如加const限制和使types行为和内置types一致);然后不要要求客户必须记得做某些事情。
3)阻止误用的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。
4)tr1::shared_ptr提供的某个构造函数接受两个实参:一个是被管理的指针,一个是引用次数变为0时被调用的“删除器”。
std::tr1::shared_ptr<Investment> CreateInvestment()
{
// 传null是因为不知道传啥
std::tr1::shared_ptr<Investment> reVal(static_cast<Investment*>(0), getRidOfInvestment);
reVal = ...; // 令reval指向正确对象
return reVal;
}
tr1::shared_ptr有一个特别好的性质:它会自动使用它的“每个指针专属的删除器”,从而消除潜在的错误,即“跨DLL问题”
总结:自己写的接口要可以让客户顾名思义调用相关接口,并且还要在接口内完成资源管理,让客户没有约束地调用接口。
7881

被折叠的 条评论
为什么被折叠?



