楼主你好,程序的执行是这样的:在main()函数中new 了一个C对象,因C对象继承自B,要创建C首先要创建B,而B对象继承自A,要创建B首先要创建A,所以A中的构造块最先执行,然后是B中的构造块,然后是C中的构造块,构造块执行完毕后就该执行构造函数了,因C()中调用了其父类的B(int i )构造函数,B(int i )中又调用了自身的B()函数,B()函数又调用了父类A(int i ),A(int i )又调用了A()函数,所以第四个数是2,接着按照以上的函数调用顺序往回递归即可,依次是323568。对于第二个new C(123),因第一个对象已经执行了构造代码块,所以第二个对象不会再执行构造块,其函数调用栈是这样的:C(123)=>B()=>A(123)=>A();根据这个顺序往回递归即为结果。希望能解决楼主的疑问 |