#include <iostream>
using namespace std;
class A
{
public:
// 第一步:执行类A的构造函数,输出"构造函数A"
A() { cout << "构造函数A" << endl; }
virtual void func()
{
cout << "构造A" << endl;
}
// 第七步:执行类A的析构函数,输出"析构函数A"
~A() { cout << "析构函数A" << endl; }
virtual void fund()
{
cout << "清除A" << endl;
}
};
class B : public A
{
public:
// 第二步:执行类B的构造函数,调用类A里虚函数,输出"构造A"
B() { func(); }
// 第四步:执行主函数里的c.fun(),输出"开始...",并调用func();
// 由于fun()不是构造函数和析构函数,且func()为虚函数
// 所以最终结果输出"开始...类C"
void fun()
{
cout << "开始...";
func();
}
// 第六步:执行类B的析构函数,调用fund()函数;
// 由于是在析构函数里,且fund()为虚函数,所以执行类A里的fund();
// 输出清除A
~B() { fund(); }
};
class C : public B
{
public:
// 第三步:执行类C的构造函数,输出"构造函数C"
C()
{
cout << "构造函数C" << endl;
}
void func()
{
cout << "类C" << endl;
}
// 第五步:执行类C的析构函数,输出"清除C"
~C() { fund(); }
void fund()
{
cout << "清除C" << endl;
}
};
int main()
{
C c;
c.fun();
return 0;
};
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有