Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350905
  • 博文数量: 63
  • 博客积分: 1412
  • 博客等级: 中尉
  • 技术积分: 648
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 23:07
文章分类

全部博文(63)

文章存档

2012年(42)

2011年(21)

我的朋友

分类: C/C++

2012-03-12 11:25:44

今天试了下c++ 虚析构函数。
虚析构函数的目的是当一个基类指针指向一个派生类指针时,当delete该基类指针时,也会调用派生类的析构函数。
具体看如下代码
 

点击(此处)折叠或打开

  1. #include <iostream>

  2. using namespace std;

  3. class base
  4. {
  5. public:
  6.     base()
  7.     {
  8.         cout << "base: Constructor" << endl;
  9.     };

  10.     virtual ~base()
  11.     {
  12.         cout << "base: Destructor" << endl;
  13.     };
  14. };

  15. class derived : public base
  16. {
  17. public:
  18.     derived()
  19.     {
  20.         cout << "derived: Constructor" << endl;
  21.     };

  22.     virtual ~derived()
  23.     {
  24.         cout << "derived: Destructor" << endl;
  25.     }
  26. };

  27. int    main()
  28. {
  29.     base *b = NULL;

  30.     derived *p = new derived;

  31.     b = p;

  32.     if( b != NULL )
  33.     {
  34.         delete b;
  35.     }

  36.     return 0;
  37. }
函数输出:
base: Constructor
Derived: Constructor
Derived: Destructor
base: Destructor

如果base基类中的析构函数没有添加virtual关键字,函数输出如下:

base: Constructor
Derived: Constructor
base: Destructor

可以看出,当基类的析构函数添加了virtual关键字后,当其delete时,也会调用子类的析构函数。

阅读(927) | 评论(0) | 转发(0) |
0

上一篇:c static 变量

下一篇:贪心算法

给主人留下些什么吧!~~