C 构造函数没有返回类型。究竟是为什么?

新手上路,请多包涵

我已经用谷歌搜索并阅读了很多帖子,但是有很多不同的答案都合乎逻辑,我想知道该主题的专家是否可以揭开这个问题的神秘面纱。

有人说没有返回是因为没有办法返回——语法禁止它——是的,这是有道理的,但我相信所有函数都必须返回一些东西,不是吗?其他人说构造函数会返回新创建的对象本身,这似乎是有道理的,因为在构造函数上使用了赋值运算符。还有一些人有其他有趣的解释。

原文由 wonton 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

构造函数不像其他函数那样被调用,所以它们不会像其他函数那样返回。它们作为某些构造的副作用执行(强制转换、 new 、变量定义、 ctor-initializer-list 、按值传递、按值返回)。

原文由 Ben Voigt 发布,翻译遵循 CC BY-SA 3.0 许可协议

构造函数没有指定返回类型,因为它是多余的:除了构造函数可能“返回”的类型之外,没有其他类型。我将“return”放在引号中,因为从技术上讲,构造函数不会返回任何内容:当在静态上下文中调用它们时,它们会在适当的位置初始化一个实例;当它们在动态上下文中被调用时,它是运算符 new 返回一些东西,而不是构造函数。

原文由 Sergey Kalinichenko 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题