设为首页 加入收藏

TOP

C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数(二)
2015-07-20 17:53:33 来源: 作者: 【 】 浏览:4
Tags:构造 函数 & 拷贝 派生 继承
进行的... 36 } 37 private: 38 int m_d; 39 }; 复制代码

五、关于虚析构

虚析构一般伴随着多态而产生,多态主要方式就是用基类的指针或引用指向或引用派生类,而形成多态。

但是这样就会存在一个问题,当我们析构的时候,由于是基类的指针,就会调用的是基类的构造函数,从而造成派生内存溢出。为了解决这个问题,引入了虚析构的概念。将基类的构造函数声明为虚,从而使其在调用析构函数的时候能够准确的调用派生类的析构函数。

如下代码必须用到虚析构才能准确的析构派生类,并释放其占有内存。

复制代码
 1 class Base
 2 {
 3 public:
 4     Base(int b) : m_b(b)
 5     {
 6     }
 7     //虚析构,使基类指针能准确的释放所指向的派生类里面的内容
 8     virtual ~Base()
 9     {
10     }
11 private:
12     int m_b;
13 };
14 
15 class Derived : public Base
16 {
17 public:
18     Derived(int b, char *pStr) : Base(b)
19     { 
20         m_pStr = new char[strlen(pStr)+1];
21         strcpy(m_pStr,pStr);
22     }
23     ~Derived()
24     {
25         delete m_pStr;
26         m_pStr = NULL;
27     }
28 private:
29     char *m_pStr;
30 };
31 
32 int main(void)
33 {
34     char *pStr = "abcdefg";
35     Base *b = new Derived(1,pStr);
36     delete b;
37 
38     return 0;
39 }
复制代码

原文地址:http://www.cnblogs.com/nchar/p/3911427.html

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces Round #261 (Div. 2) .. 下一篇bnu 34985 Elegant String(矩阵..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: