请问初级有关问题:构造函数的调用顺序
请教初级问题:构造函数的调用顺序。
class B{
.........
}
class A{
B b; // loc 1
public A():b(){ // loc 2
}
}
各位大侠,有两个类, A里面有B的类型的一个成员。 在loc 1处会调用一下B的构造函数。
同时,A的构造函数也会调用一下B的构造函数 (loc 2)
。
我想请问一下,这两个地方的调用,谁先水后? 那个真正起作用?
------解决思路----------------------

一个对象构建的过程
根据对象类型的大小分配内存
初始化成员变量
成员变量是基本类型默认垃圾值 成员变量是类类型 就构建这个成员变量。
调用这个类对象的构造函数
采用单参构造函数去掉B类的默认构造函数
结果运行通过;
可见并非是先调用loc1 若是先调用的是loc1,而B中已不存在默认无参构造函数 ,编译器会报错。
所以我觉得应该是先调用loc2, 而这里loc1成员变量只是起到声明作用 告诉编译器分配多少内存。
class B{
.........
}
class A{
B b; // loc 1
public A():b(){ // loc 2
}
}
各位大侠,有两个类, A里面有B的类型的一个成员。 在loc 1处会调用一下B的构造函数。
同时,A的构造函数也会调用一下B的构造函数 (loc 2)
。
我想请问一下,这两个地方的调用,谁先水后? 那个真正起作用?
------解决思路----------------------
一个对象构建的过程
根据对象类型的大小分配内存
初始化成员变量
成员变量是基本类型默认垃圾值 成员变量是类类型 就构建这个成员变量。
调用这个类对象的构造函数
采用单参构造函数去掉B类的默认构造函数
结果运行通过;
可见并非是先调用loc1 若是先调用的是loc1,而B中已不存在默认无参构造函数 ,编译器会报错。
所以我觉得应该是先调用loc2, 而这里loc1成员变量只是起到声明作用 告诉编译器分配多少内存。