c++ - 必须在构造函数基/成员中初始化?

标签 c++ constructor

<分区>

我有这个:

class SistemPornire
{
Motor& m;
Electromotor& e;
public:
SistemPornire(Motor&,Electromotor&);
}

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

SistemPornire::SistemPornire(Motor& M,Electromotor& E)
{
this->m = M;
this->e = E;
}

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

最佳答案

你必须使用 initialization lists ,因为必须始终在创建时初始化引用:

SistemPornire::SistemPornire(Motor& M,Electromotor& E) : m(M), e(E) { }
//                                                     ^^^^^^^^^^^^

如果不需要,构造函数的主体可以在这些引用绑定(bind)到对象之前访问它们。然而,在 C++ 中,引用必须始终绑定(bind)到一个对象。

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

关于c++ - 必须在构造函数基/成员中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461081/

相关文章:

c++ - COM:返回字符串的拷贝,还是实际值?

c++ - 用于 C++ 应用程序的 SMART ASSERT?

C++:结构/类中的构造函数与初始化列表

c++ - 在执行不平凡的构造函数之前引用成员

c++ - 错误 : ‘clang’ is not a namespace-name

c++ - 使变量成为常数的重要性是什么?

c++ - 派生类映射

java - 将异常消息传递给父类,而不使用 throw new exception(); 构造​​ , 消息;

java构造函数中的异常处理

python - Tkinter:使用附加参数对 Button 进行子类化