我正在使用C++进行一个小型项目,该项目需要我创建在另一个类中编写的自定义类的对象。该类称为FIRFilterModule
,它具有一个简单的空白构造函数。
具有Java背景,我的冲动就是像这样创建它:
class SensorInput{
public:
FIRFilterModule firFilter;
...More Class Members...
SensorInput():firFilter(FIRFilterModule()){}
...};
但是,这会以非常有用的错误消息“此上下文中的错误”进行编译。我有点迷茫,为什么不起作用。令我更加困惑的是,我将代码更改为:
class SensorInput{
public:
FIRFilterModule firFilter;
...More Class Members...
SensorInput(){}
...};
有用。
有人可以帮我理解为什么会这样吗?
最佳答案
在这种特殊情况下,为成员字段运行默认构造函数,则无需执行任何操作。构造函数会自动运行。所以你可以写
class SensorInput{
public:
FIRFilterModule firFilter;
SensorInput() { ... }
};
仅当需要调用具有参数或初始化POD类型的构造函数时,才需要成员初始化列表。例如说
FIRFilterModule
有一个采用int
的构造函数。然后,您将使用成员初始化列表SensorInput() : firFilter(42) { ... }