上午好☀️☀️☀️️
本答案参考ChatGPT-3.5
问题:如何定义一个时间类 Time?
解决方案:
- 定义一个时间类 Time:
class Time {
protected:
double hour; // 时
double minute; // 分
double second; // 秒
public:
Time(double _hour = 0.0, double _minute = 0.0, double _second = 0.0);
Time(const Time &time);
void setHour(double _hour);
void setMinute(double _minute);
void setSecond(double _second);
double getHour() const; // const 成员函数
double getMinute() const; // const 成员函数
double getSecond() const; // const 成员函数
void printTime() const; // const 成员函数
};
- 实现数据成员初始化的带默认参数的构造函数:
Time::Time(double _hour /* = 0.0 */, double _minute /* = 0.0 */, double _second /* = 0.0 */)
: hour(_hour), minute(_minute), second(_second) {}
- 实现拷贝构造函数:
Time::Time(const Time &time)
: hour(time.hour), minute(time.minute), second(time.second) {}
- 实现设置小时、分钟、秒和获取小时、分钟、秒的成员函数:
void Time::setHour(double _hour) {
hour = _hour;
}
void Time::setMinute(double _minute) {
minute = _minute;
}
void Time::setSecond(double _second) {
second = _second;
}
double Time::getHour() const {
return hour;
}
double Time::getMinute() const {
return minute;
}
double Time::getSecond() const {
return second;
}
- 实现打印时间信息的成员函数:
void Time::printTime() const {
printf("%.02f:%.02f:%.02f\n", hour, minute, second);
}
- 修改后的完整代码:
#include <cstdio>
class Time {
protected:
double hour; // 时
double minute; // 分
double second; // 秒
public:
Time(double _hour = 0.0, double _minute = 0.0, double _second = 0.0);
Time(const Time &time);
void setHour(double _hour);
void setMinute(double _minute);
void setSecond(double _second);
double getHour() const; // const 成员函数
double getMinute() const; // const 成员函数
double getSecond() const; // const 成员函数
void printTime() const; // const 成员函数
};
Time::Time(double _hour /* = 0.0 */, double _minute /* = 0.0 */, double _second /* = 0.0 */)
: hour(_hour), minute(_minute), second(_second) {}
Time::Time(const Time &time)
: hour(time.hour), minute(time.minute), second(time.second) {}
void Time::setHour(double _hour) {
hour = _hour;
}
void Time::setMinute(double _minute) {
minute = _minute;
}
void Time::setSecond(double _second) {
second = _second;
}
double Time::getHour() const {
return hour;
}
double Time::getMinute() const {
return minute;
}
double Time::getSecond() const {
return second;
}
void Time::printTime() const {
printf("%.02f:%.02f:%.02f\n", hour, minute, second);
}
int main() {
Time t1; // 调用带默认参数的构造函数
t1.printTime(); // 打印 0.00:0.00:0.00
Time t2(1.23, 4.56, 7.89); // 调用带参数的构造函数
t2.printTime(); // 打印 1.23:4.56:7.89
Time t3(t2); // 调用拷贝构造函数
t3.printTime(); // 打印 1.23:4.56:7.89
t1.setHour(11.0);
t1.setMinute(22.0);
t1.setSecond(33.0);
t1.printTime(); // 打印 11.00:22.00:33.00
printf("%.02f\n", t1.getHour()); // 打印 11.00
return 0;
}