必须在构造函数库/成员中初始化?

use*_*010 5 c++ constructor

我有这个:

class SistemPornire
{
Motor& m;
Electromotor& e;
public:
SistemPornire(Motor&,Electromotor&);
}
Run Code Online (Sandbox Code Playgroud)

其中Motor和Electromotor是另外两个类别.我尝试像这样定义这个类的构造函数:

SistemPornire::SistemPornire(Motor& M,Electromotor& E)
{
this->m = M;
this->e = E;
}
Run Code Online (Sandbox Code Playgroud)

但它给了'SistemPornire :: m':必须在构造函数base/member初始化列表和'SistemPornire :: e'中初始化:必须在构造函数base/member初始化列表中初始化

And*_*owl 8

您必须使用初始化列表,因为必须始终在创建时初始化引用:

SistemPornire::SistemPornire(Motor& M,Electromotor& E) : m(M), e(E) { }
//                                                     ^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

如果不需要,构造函数的主体可以在绑定到对象之前访问这些引用.但是,在C++中,引用必须始终绑定到对象.

初始化列表中的初始化始终保证在执行构造函数的主体之前(以及构造所有基类子对象之后)执行.