【问题描述】根据程序运行结果,将时间类的构造函数补充完成,要求类中只能定义一个构造函数。 【输入形式】 【输出形式】 0点0分0秒 3点0分0秒 3点20分0秒 3点20分30秒
时间: 2024-09-24 09:03:53 浏览: 37
《C++程序设计》期末考核选题.doc
要根据程序运行结果来补全时间类的构造函数,我们可以创建一个`Time`类,包含小时、分钟和秒三个私有成员变量。然后提供一个带有默认参数的构造函数,接受三个整数参数分别表示小时、分钟和秒。如果不需要传递所有参数,可以使用默认值或设置为可选参数。
这里是一个简单的实现:
```cpp
#include <iostream>
class Time {
private:
int hours;
int minutes;
int seconds;
public:
// 构造函数,接收小时(范围0-23)、分钟(范围0-59)和秒(范围0-59)
Time(int h = 0, int m = 0, int s = 0) :
hours(h), minutes(m), seconds(s)
{
// 如果分钟或秒超过范围,进行检查并调整
if (minutes < 0 || minutes >= 60) {
std::cerr << "Invalid minute value!" << std::endl;
minutes = 0; // 或者抛出异常
}
if (seconds < 0 || seconds >= 60) {
std::cerr << "Invalid second value!" << std::endl;
seconds = 0; // 或者抛出异常
}
}
// 定义友元函数用于打印时间
friend std::ostream& operator<<(std::ostream& os, const Time& time);
};
// 输出流重载,方便打印时间
std::ostream& operator<<(std::ostream& os, const Time& time) {
return os << time.hours << ":" << time.minutes << ":" << time.seconds;
}
int main() {
Time t1; // 默认构造,0点0分0秒
std::cout << "t1: " << t1 << std::endl;
Time t2(3); // 3点0分0秒
std::cout << "t2: " << t2 << std::endl;
Time t3(3, 20, 0); // 3点20分0秒
std::cout << "t3: " << t3 << std::endl;
Time t4(3, 20, 30); // 3点20分30秒
std::cout << "t4: " << t4 << std::endl;
return 0;
}
```
阅读全文