#include <iostream>
class CObject {
public:
CObject() {
/*构造函数中调用虚函数
此时子类还未构造完成,故此时调用CObject::Test1,等子类构造完成后CMonster::Test1被调用
输出结果如下:
CObject-Test1
CObject-construct
CMonster-construct
CMonster-Test1: hp=3000
*/
Test1();
printf("CObject-construct\n");
}
virtual void Test1() {
printf("CObject-Test1\n");
}
};
class CMonster : public CObject {
public:
CMonster() {
hp = 3000;
printf("CMonster-construct\n");
}
virtual void Test1() {
printf("CMonster-Test1: hp=%d\n", hp);
}
private:
int hp;
};
int main()
{
auto ot = new CMonster();
ot->Test1();
}