C :适当的格式以初始化派生和基础
C++: proper format to initialize derived and base along
我已经完成了一个可以举行的日期课程,该课程可以举行该月,一天和年度。但是现在我有一个问题。我已经使用了带有继承的日期课来存储,例如,人(接待员,乘客等((酒店((一家酒店(的人(实际上使用人的初始化列表中的日期类别(,但是现在我不知道我应该主要使用的人来初始化一个人的格式?无论如何,我是否可以直接做到这一点?对不起,我是初学者。任何帮助都赞赏。这是我代码的某些部分:
class date {
int month = 1;
vector<int>month_days{ 31,31,31,31,31,31,30,30,30,30,30,29 };
int day = 1;
int year = 1300;
//---------------------member functions:
public:
date(int m = 1, int d = 1, int y = 1300) {
if (m>0 && m <= 31) month = m;
if (d>0 && d <= 31) day = d;
if (y>0 && y <= 3000) year = y;
}
//some other code...
};
class person:public date {
protected:
string m_name;
string m_familyName;
string m_idNumber;
//---------------------member functions:
public:
person(string name, string familyName, string idNumber, date dateOfBirth)
: m_name(name),m_familyName(familyName),m_idNumber(idNumber),date(dateOfBirth)
{
}
//some other code...
};
这是我在主要中输入的内容,我知道它无法完成工作:
person a("Michael", "Deoran", "05174084", (4,17,1998));
我检查了对象" A"的存储日期,其日期返回1,1,1300,但是,我也不知道该工作也能做什么。(顺便说一句,我定义一个与人分开的日期的原因是,我在其中超载了操作员 - 计算乘客的住宿时间(
您需要做的就是将括号更改为牙套(即代码进行编译,不要进行精心设计,而不是产生-Wreorder
警告(:
person a("Michael", "Deoran", "05174084", {4, 17, 1998});
- 列表初始化。
带有括号的版本相当于(逗号运算符(:
person a("Michael", "Deoran", "05174084", 1998);
在提供参数的默认值之前,我会三思而后行。您可能不需要它们。
相关文章:
- 何时为派生类初始化 vptr?
- 初始化派生结构的基部分/意外打包派生结构字段以对齐基结构的间隙
- 为什么基类数据在派生类数据之前初始化
- C++初始化之前派生类调用基类的方法
- std::数组派生类聚合初始化
- 如何使用派生类类型数据初始化 std::shared_ptr?
- 将已初始化的基类分配给派生类
- 在派生类的构造函数初始化中无法访问受保护的函数
- OOP - 抽象类类型,初始化基类和派生类中的变量
- C :适当的格式以初始化派生和基础
- 初始化 MFC 中 CFormView 派生类的成员数据
- 派生类的聚合初始化
- 初始化基类和派生类中的类成员变量
- C++派生类的初始化列表
- C++ - 在派生类中静态初始化受基类保护的成员变量
- 为什么派生类成员的初始化值在转换为基指针时不会丢失?
- 如何在派生类中初始化继承的模板POD结构
- 如何在 switch 语句中正确初始化不同的派生类
- 如何在派生构造函数的大括号中初始化基构造函数?C++
- 用派生的类构造函数初始化对象