我正在使用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) { ... }

07-26 09:42