gpt4 book ai didi

c# - 为什么在创建带参数的构造函数时默认的无参数构造函数消失

转载 作者:IT老高 更新时间:2023-10-28 11:30:10 34 4
gpt4 key购买 nike

在 C#、C++ 和 Java 中,当您创建带参数的构造函数时,默认的无参数构造函数会消失。我一直只是接受这个事实,但现在我开始想知道为什么。

这种行为的原因是什么?它只是一种“安全措施/猜测”,说“如果您创建了自己的构造函数,您可能不希望这个隐含的构造函数存在”?还是有技术原因导致编译器无法在您自己创建构造函数后添加?

最佳答案

如果您添加了自己的构造函数,编译器没有理由不能添加构造函数——编译器几乎可以做任何它想做的事!然而,你必须看看什么是最有意义的:

  • 如果我没有为非静态类定义 any 构造函数,我很可能希望能够实例化该类。为了实现这一点,编译器必须添加一个无参数的构造函数,它没有任何作用,但允许实例化。这意味着我不必为了让它工作而在代码中包含一个空的构造函数。
  • 如果我定义了自己的构造函数,尤其是带有参数的构造函数,那么我很可能有自己的逻辑,必须在创建类时执行。如果编译器在这种情况下创建一个空的、无参数的构造函数,它将允许某人跳过我编写的逻辑,这可能会导致我的代码以各种方式中断。如果在这种情况下我想要一个默认的空构造函数,我需要明确地说出来。

因此,在每种情况下,您都可以看到当前编译器的行为在保留代码可能的意图方面最有意义。

关于c# - 为什么在创建带参数的构造函数时默认的无参数构造函数消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792207/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com