当使用new B()创建B的实例时,产生什么输出?
分析:
输出x=1, y=0;
因为构造B之前,先执行变量,y没有明确赋值,默认为0。执行B的构造函数,因为B继承A,所以先执行A的构造函数。A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,所以执行B类的PrintFields方法,结果输出。虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出。
当使用new B()创建B的实例时,产生什么输出?
分析:
输出x=1, y=0;
因为构造B之前,先执行变量,y没有明确赋值,默认为0。执行B的构造函数,因为B继承A,所以先执行A的构造函数。A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,所以执行B类的PrintFields方法,结果输出。虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出。