- 1
- 0
- 约 37页
- 2017-05-30 发布于四川
- 举报
* 3.3.4 虚析构函数 不能声明虚构造函数,因为在构造函数执行时,对象还没有完全构造好,不能按虚函数方式进行调用。 可声明虚析构函数,如果用基类指针指向一个new生成的派生类对象,通过delete作用于基类指针删除派生类对象时,有以下两种情况: (1)基类析构函数不为虚析构函数,会调用基类的析构函数,派生类的析构函数不会被调用,派生类对象中派生的那部分内存空间无法析构释放。 (2)如果基类析构函数为虚析构函数,释放基类指针的时候会调用基类和派生类中的所有析构函数,派生类对象中所有的内存空间都将被释放,包括继承基类的部分。 所以C++中的析构函数通常是虚析构函数。 * 3.3.4 虚析构函数 【例3.12】虚析构函数的用法和作用示例。 #include iostream.h class Base1 { public: ~Base1() { cout ~Base1()\n; } }; class Derived1 : public Base1 { public: ~Derived1() { cout ~Derived1()\n; } }; class Base2 { public: virtual ~Base2() { cout ~Base2()\n; } }; * * class Derived2 : public Base2 {
原创力文档

文档评论(0)