在(基类的)构造器内部调用某个动态绑定的方法时,C++和Java有不同的表现。
C++ 在构造函数中调用虚函数时,虚函数机制不起作用,调用的将是基类的方法。
http://blog.youkuaiyun.com/m_vptr/article/details/7039954
Java在构造器内调用动态绑定的方法时,调用的将是子类的方法,而子类这是其实还没有完全构造完成。
Java编程思想中说到实际过程是:
1)在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零。
2)调用基类的构造函数。此时调用动态绑定的方法时,子类的成员还是默认值。
3)按照声明的顺序调用成员的初始化方法。
4)调用导出类的构造主体