#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();
}
C++ 构造函数中调用虚函数
最新推荐文章于 2025-03-27 11:16:12 发布
这篇博客探讨了C++中构造函数内调用虚函数的行为。在CObject的构造函数中调用Test1()时,由于子类CMonster还未完全构造,因此首先调用的是CObject的Test1()。待子类构造完成后,会自动调用CMonster的Test1(),展示出C++对象构造过程中的虚函数调用机制。
971

被折叠的 条评论
为什么被折叠?



