C++中的对象构造

Dan*_*zer 1 c++ constructor object c++11

我正在开发一个C++的小项目,它要求我创建一个我在另一个类中编写的自定义类的对象.该类被调用FIRFilterModule,它有一个简单的空白构造函数.

作为一个java背景,我的冲动是创建它像这样:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput():firFilter(FIRFilterModule()){}
...};
Run Code Online (Sandbox Code Playgroud)

但是,这会编译一个非常有用的错误消息"在此上下文中出错".我有点失落,为什么不起作用.增加我的困惑我将代码更改为:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput(){}
...};
Run Code Online (Sandbox Code Playgroud)

有用.

有人能帮助我理解为什么会这样吗?

Jar*_*Par 6

在这种特殊情况下,运行成员字段的默认构造函数,您不必执行任何操作.构造函数自动运行.所以你可以写

class SensorInput{
public:

  FIRFilterModule firFilter;

  SensorInput() { ... }
};
Run Code Online (Sandbox Code Playgroud)

只有在需要调用具有参数或初始化POD类型的构造函数时,才需要成员初始化列表.比如说FIRFilterModule有一个构造函数,它有一个int.然后你将使用memeber初始化列表

SensorInput() : firFilter(42) { ... }
Run Code Online (Sandbox Code Playgroud)