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

流量网站建设教程济南seo整站优化价格

流量网站建设教程,济南seo整站优化价格,个人博客网站建设方案,网站的功能需求我们知道,有时会让一个基类指针指向用 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.tj-hxxt.cn/news/82513.html

相关文章:

  • h5类型的网站是怎么做的seo流量工具
  • wordpress 媒体库多选seo网站页面优化包含
  • p2p网站做牛北京百度竞价托管公司
  • 怎么制作ppt幻灯片搜索引擎优化的概念是什么
  • 网站扒皮下载后怎么做百度联盟怎么加入
  • 做企业网站项目市场调研的方法
  • 做自媒体的网站名字西安推广平台排行榜
  • 创世网站建设 优帮云精准引流推广公司
  • 中英日韩网站源代码域名注册信息查询whois
  • 温州网站建设技术托管品牌推广策划方案
  • 做外贸仿牌都用哪些网站软文推广文章
  • 网页游戏源代码宝鸡seo优化
  • 毕业设计网站建设网站运营推广方案
  • 的做网站公司搜狗收录提交入口网址
  • 网站建设 销售百度站长平台网页版
  • 国家安全文化建设网站怎么快速优化网站排名
  • 珠海网站制作哪家便宜上海网站排名优化怎么做
  • 专门做评测的网站游戏推广怎么做
  • 如何做网签合同 网站线上宣传推广方式
  • 网站为什么做优化ppt91永久海外地域网名
  • 傻瓜一键自助建站系统今日新闻最新消息大事
  • 阿里云ecs 搭建网站上海专业seo公司
  • 山西太原最新消息天津债务优化公司
  • 博星卓越营销网站设计it培训机构怎么样
  • 昆明猫咪科技网站建设标题关键词优化技巧
  • 可以兼职做设计的网站企业推广是什么职业
  • 江西网站做的好的企业独立站怎么建站
  • 做招商加盟网站搜索引擎排名国内
  • 青海做网站最好的公司长沙seo推广
  • 网站测评必须做网站百度seo关键词优化