我对构造函数链的理解是,当一个类中有多个构造函数(重载构造函数)时,如果其中一个构造函数试图调用另一个构造函数,那么这个过程称为CONSTRUCTOR CHAINING,它在C++中不受支持。 最近我碰到这一段就在阅读在线素材....它是这样的......C++构造函数链
你可能会发现自己在你想写一个成员函数的情况重新初始化类回默认值。因为你可能已经有了这样的构造函数,所以你可能会试图从你的成员函数中调用构造函数。如前所述,链接构造函数调用在C++中是非法的。你可以从你的函数中的构造函数复制代码,这将工作,但会导致重复的代码。在这种情况下,最好的解决方案是将代码从构造函数移动到新函数,并让构造函数调用您的函数来完成初始化数据的工作。
调用构造函数的成员函数是否也在构造函数链中? 请在C++中关注这个主题。
我说不是,这是一个非不合逻辑的文章说,构造函数链是非法的,他说,一些任意的成员函数(不一定是一个构造函数)可能会认为它要调用构造函数来重置后立即价值。但是谁知道,你还没有引用这篇文章或引用它描述构造函数链的地方,所以也许它在别处已经描述过的一些不寻常的意义上使用它。 –
这不是非法的。从成员调用构造函数的效果是创建一个适用于该构造的临时对象,而不是创建该调用的“this”对象。 –
@Amardeep:同意,这将是更准确的说,构造函数链是C++ 03“不可能的”,而不是“非法”。没有语法来描述这样做。正如你所说,通过调用构造函数的正常定义与构造函数链并不完全相同。 –