假设正在为一个表示时间日期的类设计构造函数:
class Date {
public:
Date(int month, int day, int year);
...
};
Date d(30, 3, 1995); // 糟糕! 应该是 “3, 30” , 而不是 "30, 3"
Date d(2, 30, 1995); // 糟糕! 应该是 "3, 30" , 而不是 "2, 30"
引入新的类型,可以避免许多客户的错误:
struct Day {
explicit Day(int d) :val(d) {
}
int val;
};
struct Month {
explicit Month(int d) :val(d) {