如果您添加了自己的构造器,则没有理由编译器无法添加构造函数-编译器可以执行几乎所有需要的操作!但是,您必须查看最有意义的内容:
- 如果我还没有为非静态类定义 任何 构造函数,那么我很可能希望能够实例化该类。为了做到这一点,编译器 必须 添加一个无参数的构造函数,该构造函数除了允许实例化之外没有其他作用。这意味着我不必为了使其正常工作而在代码中包含空的构造函数。
- 如果我定义了自己的构造函数,尤其是带有参数的构造函数,那么我很可能具有自己的逻辑,必须在创建类时执行该逻辑。如果在这种情况下,编译器创建一个空的,无参数的构造函数,它将允许某人 跳过 我编写的逻辑,这可能导致我的代码以多种方式中断。如果在这种情况下我想要一个默认的空构造函数,则需要这样明确地说。
因此,在每种情况下,您都可以看到,就保留代码的 可能意图 而言,当前编译器的行为最有意义。



