我正在尝试使用继承创建日期和时间类。

父类Date的变量为月,日和年。

Date派生类DateTime具有相同的变量,但增加了小时,分钟和秒。创建DateTime实例后,必须将其传递给Date实例,并带有可选参数hour,minute和second。 Date参数是必需的。如果未传递可选参数,则将应用默认值0。

有没有更有效的方法来实现这一目标?我觉得通过使用Date实例中的函数为新的DateTime实例检索参数来重新设置参数很繁琐。

DateTime::DateTime(Date passDate){
  day = passDate.getDay();
  month = passDate.getMonth();
  year = passDate.getYear();
  hour = 0;
  minute = 0;
  second = 0;
}

DateTime::DateTime(Date passDate, int hourSet){
  day = passDate.getDay();
  month = passDate.getMonth();
  year = passDate.getYear();
  hour = hourSet;
  minute = 0;
  second = 0;
}

DateTime::DateTime(Date passDate, int hourSet, int minuteSet){
  day = passDate.getDay();
  month = passDate.getMonth();
  year = passDate.getYear();
  hour = hourSet;
  minute = minuteSet;
  second = 0;
}

最佳答案

您可以调用父类的构造函数和默认参数值,以使代码更加简洁:

DateTime::DateTime(const Date& passDate, int hourSet = 0, int minuteSet = 0):
    Date(passDate) {
  hour = hourSet;
  minute = minuteSet;
  second = 0;
}

10-04 14:54