当前位置: 首页 > news >正文

家具企业网站模板做网站需要哪个系统

家具企业网站模板,做网站需要哪个系统,旅游网站建设的总结,免费图文制作app我们知道,有时会让一个基类指针指向用 new 运算符动态生成的派生类对象(类似接口的作用);同时,用 new 运算符动态生成的对象都是通过 delete 指向它的指针来释放的。如果一个基类指针指向用 new 运算符动态生成的派生类…

我们知道,有时会让一个基类指针指向用 new 运算符动态生成的派生类对象(类似接口的作用);同时,用 new 运算符动态生成的对象都是通过 delete 指向它的指针来释放的。如果一个基类指针指向用 new 运算符动态生成的派生类对象,而释放该对象时是通过释放该基类指针来完成的,就可能导致程序不正确。

比如,我们有一个钟表的基类 TimeKeeper用来计时,而我们又有原子钟、水钟、腕表等一系列子类,根据工厂模式,我们可以定义一个 getAtomicClock函数来获得一个原子钟指针,然后用基类指针TimeKeeper来指向它们,其他子类也是同理,这个TimeKeeper就相当于一个接口

#include <iostream>
using namespace std;class TimeKeeper
{
public:TimeKeeper() {};~TimeKeeper() { cout << "TimeKeeper::destrutor" << endl; }
};// 原子钟
class AtomicClock : public TimeKeeper
{~AtomicClock(){ cout << "AtomicClock::destrutor" << endl; }
}; 
class WaterClock : public TimeKeeper {}; // 水钟
class WristClock : public TimeKeeper {}; // 腕表TimeKeeper* getAtomicClock()
{return new AtomicClock;
}TimeKeeper* getWaterClock()
{return new WaterClock;
}TimeKeeper* getWristClock()
{return new WristClock;
}int main() {TimeKeeper* ptk = getAtomicClock();delete ptk;ptk = getWaterClock();ptk = getWristClock();
}

如上面代码所示,我们的三个工厂函数都是用的基类来指向的,因为我们用的 new 来创建对象,所以自然要用 delete 释放掉,可是问题来了,我们的ptk指针是用基类指向子类对象,那么我们释放的时候是调用基类的析构还是子类的析构函数呢?答案是调用基类的析构!因为这里是静态联编,在运行之前,编译器只知道ptk是 TimeKeeper类型的,自然是调用基类的析构,但是我们实例化的是一个子类啊,你调用基类的析构,那子类中万一有一些基类没有的元素呢?那岂不是没有被析构造成内存泄漏了?

因此,为了解决这个问题,就轮到了virtual析构函数的出场了,我们只需要将基类的析构函数声明为虚析构即可!

virtual ~TimeKeeper() { cout << "TimeKeeper::destrutor" << endl; }

发现基类和子类的析构函数都被调用了!所以我们记住:问题的关键在于在实现多态的时候,堆区的内存可能会泄露,这是要用虚析构!

如果是引用的话,哪怕是多态不在堆区就不需要虚析构了:

AtomicClock ac;
TimeKeeper& ptk = ac;

程序结束的时候,依然会调用基类和子类的析构函数:

最后让我们再记一条原则:类的设计目的如果不是作为基类使用,或者不是为了具备多态性,就不该声明虚析构函数!

http://www.yayakq.cn/news/557397/

相关文章:

  • 专做特产的网站网站前置审批 公司名称
  • 富蕴县建设局网站运维工程师是青春饭吗
  • 河南省建设科技网站怎么让网站排名下降
  • 镇江还有什么网站吗seo快速提高网站转化率
  • 网站建设方案交换认苏州久远网络wordpress修改首页调用
  • 网站推广专家十年乐云seo网站头部导航
  • 北京 工业网站建设公司凉山州城乡和住房建设厅网站
  • 配送系统网站怎么做网站空间如何申请
  • wordpress做游戏网站wordpress主题dux1.9
  • 太平洋保险网站怎样做视频网站
  • soso网站提交入口深圳怎么做网络推广软仿
  • 做火锅加盟哪个网站好快速建设网站外链
  • 阳江建设网站wordpress 文章时间轴
  • 帮忙做ppt赚钱的网站北京电力建设公司现状
  • 在哪里可以做海外淘宝网站wordpress和apache
  • 南和网站建设公司太原网站建设龙之向导外贸网站 网络服务
  • 好用网站推荐免费软文是啥意思
  • 潍坊站总站人工服务电话xampp如何安装wordpress
  • 池州有哪些做网站的手机网站设计思路
  • 用什么可以做网站服务器里怎么建设网站
  • 网站建设类行业资讯私密浏览器免费观看
  • 网站建设谈单流程人才网网站模板
  • 做网站如何做视频网站平台建设属于固定资产吗
  • 织梦确定网站风格购物网站seo关键词定位
  • 南阳网站怎么推广优酷专门给马天宇做的网站
  • 网站架构策划wordpress做网店
  • 网站建设项目进度计划开封seo推广
  • 微信企业号网站开发软件wordpress 邮件认证
  • 海门住房和城乡建设部网站wordpress宽屏主题
  • 邯山网站制作陕西专业网站建设哪家好