对象可以传递给它们自己的构造函数吗?
问题:
在 C 内类的构造函数,是否可以将对象作为参数传递给自身?
答案:
令人惊讶的是,在 C 下允许将对象传递到其自己的构造函数中标准,尽管看起来非常规。缺陷报告 363 对此进行了解释,该报告指出未初始化的对象可用于绑定引用并获取地址。
说明:
C 14 的第 3.8 节标准阐明,在对象的生命周期开始或结束之前,可以使用引用该对象的任何泛左值,但只能用于有限的目的。这包括绑定引用和获取地址,它们不依赖于对象的值。
实际上,在构造函数中使用未初始化的对象可能会导致警告,正如 Clang 关于“未初始化”变量的警告所证明的那样。但是,这些警告并不表示未定义的行为,因为没有生成不确定的值。
确实导致未定义行为的一个示例是通过赋值进行自初始化,例如“int x = x”。
结论:
虽然将对象传递给它们自己的构造函数可能看起来不寻常,但这是 C 标准下的有效做法,允许在构造过程中与未初始化的对象进行有限的交互.
以上是你能在 C 中将一个对象传递给它自己的构造函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!