#include <iostream>
class cx {
public:
virtual void func() {
std::cout << "func" << std::endl;
}
cx() {
func(); //构造函数中调用虚函数,语法上OK,效果上不对,因为当对象由子类进入基类构造时是基类类型的
//不管如何调用,总只能调用到基类的虚函数,无法调用到子类的虚函数,见下面测试
}
};
class cb : public cx {
void func() {
std::cout << "cb.func" << std::endl;
}
};
int main()
{
cx ox; //func
cb ob; //func
cx* pox = new cb(); //func
pox->func(); //cb.func
}
C++构造函数调用虚函数的后果
点赞
收藏