/*
* test.cpp
*
* Created on: 2013-5-13
* Author: Administrator
*/
#include <iostream>
/*
* 子类的析构函数执行结束会自动调用父类的析构函数(并且子类的析构函数先执行)
* 析构函数destructor的执行时机:
* 1.对于类类型的变量,作为函数的局部变量,在函数执行结束之前,会调用类的析构函数
* 2.对于类的指针类型的变量,在作为函数的局部变量,在函数执行结束之前,不会调用其析构函数,
* 而是在对该类的指针调用delete时,才会调用该类的析构函数
*
*/
using namespace std;
class F {
public:
void say();
virtual void say2();
virtual ~F(); //析构函数最好声明为虚函数,为了能够使用多态特性
private:
int a;
};
class C: public F {
public:
void say();
virtual void say2();
virtual ~C();
private:
int b;
};
void F::say() {
cout << "F say" << endl;
}
void C::say() {
cout << "C say" << endl;
}
void F::say2() {
cout << "F say2" << endl;
}
void C::say2() {
cout << "C say2" << endl;
}
F::~F() {
cout << "F destructor" << endl;
}
C::~C() {
cout << "C destructor" << endl;
}
int main(int argc, char **argv) {
//1.析构函数没有被调用
/*
F * pf = new F;
C * pc = new C;
pf->say();
pc->say();
*/
//2.析构函数被调用
/*
F * pf = new F;
C * pc = new C;
pf->say();
pc->say();
delete pf;
delete pc;
*/
//3。析构函数被调用
F f;
C c;
f.say();
c.say();
return 0;
}
cpp 析构函数的两个执行时机
最新推荐文章于 2025-07-13 01:00:00 发布
2329

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



