构造函数不能为虚函数
1.从虚函数的调用机制上看,如果构造函数为虚函数的话,那函数地址将存储在虚表,将由虚表指针来访问续表,而虚表指针是类对象的第一个数据成员,类对象又要由构造函数产生,所以构造函数不能是虚函数。
2.从构造函数的作用来看,构造函数的作用是提供初始化,在对象生命期只执行一次,不是对象的动态行为,也没有必要成为虚函数。
1.从虚函数的调用机制上看,如果构造函数为虚函数的话,那函数地址将存储在虚表,将由虚表指针来访问续表,而虚表指针是类对象的第一个数据成员,类对象又要由构造函数产生,所以构造函数不能是虚函数。
2.从构造函数的作用来看,构造函数的作用是提供初始化,在对象生命期只执行一次,不是对象的动态行为,也没有必要成为虚函数。