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