初始值设定项列表:基类和成员函数中的构造函数

initializer list: a constructor from the base class and a member function

本文关键字:成员 函数 构造函数 基类 列表      更新时间:2023-10-16

所以我想做的是

使用基类的构造函数

初始化子类的构造函数。

这就是我的基类构造函数的样子。

Appointment::Appointment(string description, int month, int day, int year, int hour, int minute):date(month, day, year){
    this-> hour = hour;
    this-> minute =minute;
    this-> description = description;
}

这就是我的子类构造函数的样子

Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute){
}

^在我的子类的构造函数(每日)中有一个错误,指出我需要显式初始化成员"date",它没有默认构造函数。

如何在子类构造函数的初始值设定项列表中显式初始化"日期"和"约会"?

它看起来像这样吗?

Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute):Date(month, day, year)

谢谢

考虑到dateappointment,使用您发布的另一个问题,作为:

Date date;
Appointment appointment;

您可以使用以下构造函数语法:

Daily::Daily(string description, int month, int day, int year, int hour, int minute) : appointment(description, month, day, year, hour, minute), date(month, day, year) { ... }

通常的定义如下:

A::A(...) : x(...), y(...), ... {...}

x(...), y(...), ...是一个初始值设定项列表,其目的是初始化类的成员对象。

它应该用逗号分隔

Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute), Date(month, day, year)

如果 Daily 类有一个 (Date) 和一个 (约会),这意味着它是一个组合,那么你必须使用初始化程序列表,如下所示

Daily::Daily(string description, int month, int day, int year, int hour, int minute) :
   Appointment(description, month, day, year, hour, minute),
   Date(month, day, year) {}
但是如果每日只有一个(约会)-组合-并且

正如我所看到的,约会有一个(日期)-组合-那么每日构造函数应该是这样的

Daily::Daily(string description, int month, int day, int year, int hour, int minute) :
   Appointment(description, month, day, year, hour, minute) {}

并且 Appoiintment 参数化构造函数将调用 Date 参数化构造函数