C++ Primer(第5版) 练习 14.49
练习 14.49 为上一题提到的类定义一个转换目标是bool的类型转换运算符,先不用在意这么做是否应该。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
class Date{public:Date();Date(size_t y, size_t m, size_t d): year(y), month(m), day(d) {}operator bool() const {int no;size_t mon[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};if(leap(year)){no = 1;}else{no = 0;}if((month >=1 && month <= 12) && (day >=1 && day <= mon[no][month-1])){return true;}else{return false;}}bool leap(size_t y);private:size_t year;size_t month;size_t day;
};
bool Date::leap(size_t y){if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)){return true;}else{return false;}
}