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)
有用.
有人能帮助我理解为什么会这样吗?
在这种特殊情况下,运行成员字段的默认构造函数,您不必执行任何操作.构造函数自动运行.所以你可以写
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)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |