1

我想在一个类中有一个引用数据成员,但我不想在构造函数中初始化它。

我怎么能这样做?

4

3 回答 3

10

这是不可能的,您必须在 ctor 初始化列表中初始化引用数据成员。如果您真的必须做这样的事情,请使用指向数据成员的指针而不是引用。初始化指向NULLctor 的指针,然后在需要时正确初始化它。

于 2012-06-27T04:04:19.667 回答
2

您必须在构造函数中初始化它(通过初始化列表),因为这是引用变量的属性(必须初始化引用)。

您可以通过默认参数对其进行初始化来将其初始化为一些静态/全局变量。

YourClass::YourClass(int& ref = _SomeGlobalVar) : m_RefInClass(ref){}

但是您将无法进一步重新初始化它。

于 2012-06-27T04:13:46.797 回答
0

如前所述,如果某处需要参考,这通常是一个糟糕的主意——通常有充分的理由说明原因。

如果您正在做的事情有特定的原因,您可能想看看 Null Object Patterns

您可以创建一个抛出某种“未实现”异常的空对象,或者什么都不做。您仍然需要在初始化列表中初始化您的成员变量,但现在至少您可以灵活地在将来进行更改。

于 2012-06-27T06:31:08.803 回答