所以,我已经定义了一个类
DataLoggingSystemStateReceiver
{
DataLoggingSystemStateReceiver()
: // initializer list
{
// stuff
}
// ... other functions here
};
Run Code Online (Sandbox Code Playgroud)
在main中,我实例化DataLoggingSystemStateReceiver,如下所示:
int main()
{
// ... run stuff
Sensor sensor(port, timer);
DataLoggingSystemStateReceiver dlss();
Log::notice("started");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在gdb中单步执行此代码时,它运行:
Sensor sensor(port, timer);
Run Code Online (Sandbox Code Playgroud)
跳过
DataLoggingSystemStateReceiver dlss();
Run Code Online (Sandbox Code Playgroud)
并继续
Log::notice("started");
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
编辑: 通过改变
DataLoggingSystemStateReceiver dlss();
Run Code Online (Sandbox Code Playgroud)
至
DataLoggingSystemStateReceiver dlss;
Run Code Online (Sandbox Code Playgroud)
在main()中,该行执行.有人可以解释原因吗?
这个:
DataLoggingSystemStateReceiver dlss();
Run Code Online (Sandbox Code Playgroud)
不声明自动变量.它声明了一个名为的函数dlss,它不带参数并返回一个DataLoggingSystemStateReceiver.
你要:
DataLoggingSystemStateReceiver dlss;
Run Code Online (Sandbox Code Playgroud)
该对象将被默认初始化,因此对于您的类类型,将调用默认构造函数.