4.条款之让接口被正确使用,不易被误用
如何设计一个“容易被使用,不容易被误用的接口”,首先明白客户容易犯的两个错误,贴以下代码
#include <iostream>
using namespace std;
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);
};
int main(int argc,char *argv[])
{
// Date d(30,3,1995); 错误
// Date d(Day(30),Month(3),Year(1995)); 错误
Date d(Month(30),Day(3),Year(1995));
return 0;
}
总结:封装其内置类型,使用类的时候必须遵循我们的规则,不至于会出低端的错误,这就是封装性的好处。
参考文献《Effective C++》作者 Scott Meyers 翻译 候捷