Dat*_*han 104
构造函数实际发生的是运行时使用编译器生成的类型数据来确定在内存中存储对象实例需要多少空间,无论是在堆栈上还是在堆上.
此空间包括所有成员变量和vtbl.分配此空间后,构造函数将作为实例化和初始化过程的内部部分进行调用,以初始化字段的内容.
然后,当构造函数退出时,运行时返回新创建的实例.因此构造函数不返回值的原因是因为它不是由代码直接调用,而是由运行时中的内存分配和对象初始化代码调用.
它的返回值(如果在编译为机器代码时实际上有一个)对用户来说是不透明的 - 因此,您无法指定它.
Thi*_*ilo 12
好吧,在某种程度上它返回刚刚构造的实例.
你甚至可以这样称呼它,例如Java
Object o = new Something();
Run Code Online (Sandbox Code Playgroud)
这看起来就像调用带有返回值的"常规"方法
Object o = someMethod();
Run Code Online (Sandbox Code Playgroud)