在下面的代码中,我将24小时制转换为12小时制。
在课程turbolinks:load
中,我接受来自用户和课程A
的价值,我正在进行转换逻辑。
如果用户输入的值大于B
,那么我将12
的值更改为c
,但如果用户输入的值小于1
,那么12
的值正在变为c
。另外,为了进一步分析,我在类1338
中添加了另外两个变量x
和b
,以查看它们发生了什么。在构造函数中,我将B
和x
的值初始化为b
,但在显示它们时会显示0
和x=11585
。
请告知,即使在构造函数中初始化它们之后,如果时间值小于b=1338
,c=1338
和12
,这些值x=11585
如何分配。
b=1338
答案 0 :(得分:0)
在采用A
参数的构造函数中,您在初始化之前使用x
,b
和c
。这些成员变量将具有不确定值,即使从中读取它们也会导致undefined behavior。
默认构造函数是 not 自动调用。
显式初始化成员变量,或者" call"默认构造函数:
B(A a1)
: B()
{
// The existing code...
}
关于一些不相关的注释:你应该创建构造函数explicit
,因此它不是转换构造函数;您应该将参数作为常量引用传递:
explicit B(A const& a1)
: B()
{
// ...
}