1,C++语言是静态语言,而把构造函数写成虚函数意味这可以动态构造。
这是和C++静态语言特性相矛盾的,所以就C++语言本身来说,是不允许的。
2,虚函数是为了迟绑定吧,为什么要迟绑定?
因为好多行为编译期确定不了,需要运行期确定并调用合适的函数去完成相应的功能。
但是对象构造的行为是确定的,不管是不是多态,只要有new Object()这种动作,就一定会沿着继承的顺序依次执行对象的构造。
这种确定的没有必要的事情,编译器开发的时候也就不会考虑这种机制.
这是和C++静态语言特性相矛盾的,所以就C++语言本身来说,是不允许的。
2,虚函数是为了迟绑定吧,为什么要迟绑定?
因为好多行为编译期确定不了,需要运行期确定并调用合适的函数去完成相应的功能。
但是对象构造的行为是确定的,不管是不是多态,只要有new Object()这种动作,就一定会沿着继承的顺序依次执行对象的构造。
这种确定的没有必要的事情,编译器开发的时候也就不会考虑这种机制.