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

网站专题建设方案关键词排名优化工具

网站专题建设方案,关键词排名优化工具,dedecms英文外贸网站企业模板,教如何做帐哪个网站好1、默认析构函数生成规则 跟构造函数一样,编译器不一定会为类生成默认析构函数。生成默认析构函数的规则有下面2条: (1)包含一个类类型的成员变量,且成员变量所属的类有默认析构函数。 (2)其…

1、默认析构函数生成规则

跟构造函数一样,编译器不一定会为类生成默认析构函数。生成默认析构函数的规则有下面2条:

(1)包含一个类类型的成员变量,且成员变量所属的类有默认析构函数。

(2)其父类有默认析构函数。

我们可以通过VS2019的反汇编代码来验证这2条规则:

class Base {
public:~Base(){}
};class Derive: public Base{
};int main()
{Derive derive;return 0;
}

反汇编窗口中的代码如下:

2、继承中的析构函数

继承中的析构顺序跟构造顺序相反:由外而内,即先析构子类对象,再析构父类对象,整个过程就跟剥洋葱一样。

我们可以用这个例子验证析构顺序:

class Base {
public:~Base() {std::cout << "~Base" << std::endl;}
};class Derive : public Base {
public:~Derive(){std::cout << "~Derive" << std::endl;}
};int main()
{Derive derive;return 0;
}

程序运行结束后,打印:

~Derive

~Base

3、虚析构函数

基类对派生类及其对象的操作,只能影响到那些从基类继承下来的成员。如果要用基类对继承成员进行操作,则要把基类的这个成员函数定义为虚函数,析构函数同样需要如此。

用基类指针来删除派生类的对象,而这个基类的析构函数不是虚函数,则对象的派生部分不会被销毁,这会导致内存泄露。

class Base {
public:~Base() { std::cout << " ~Base" << std::endl;}
};class Derive : public Base {
public:~Derive(){std::cout << " ~Derive" << std::endl;}
};int main()
{Base *pb = new Derive();delete pb;return 0;
}

程序运行后输出:~Base

没有调用Derive类的析构函数。

要解决这个内存泄漏问题,只需要把基类的析构函数改成虚析构函数就可以了:

virtual ~Base(){};

4、多重继承时的析构函数

修改上面的代码,增加一个类Base2:

class Base2 {};

并让Derive继承这个类Base2:

class Derive : public Base, public Base2 {}

现在这个类Derive的对象布局是这样的:

我们在main()函数里添加如下代码:

int main()
{Base2 *pb2 = new Derive();delete pb2;return 0;
}

执行代码后发现报错。是什么原因呢?

因为现在pb2指向的是类Base2对象,执行delete时就必须把整个类Derive对象给删除,现在只删除了部分对象,肯定是不行的。那么怎么delete整个类Derive对象呢?

把类Base2的析构函数写成虚析构函数:

virtual ~Base2(){};

http://www.dtcms.com/wzjs/275373.html

相关文章:

  • 连云港做网站公司哪家好流感用什么药最好
  • 书画院网站建设模板如何制作百度网页
  • 网站tdk优化广州seo公司
  • 电子商务网站建设计划书seo关键词推广怎么做
  • 网站建设服务合同新seo排名点击软件
  • 做论坛网站看什么书百度快速排名软件原理
  • 保定建设银行网站首页b站推广费用一般多少
  • 重庆开县网站建设公司百度人工客服24小时
  • wordpress多站点版北京培训seo哪个好
  • 高邮做网站百度实时热点排行榜
  • 如何建设一个电子商务网站泰州seo排名扣费
  • 哪些网站可以做画赚钱seo怎么推广
  • 微信人工客服系统广州各区正在进一步优化以下措施
  • 用div做网站代码百度收录查询方法
  • 静态旅游网站开发论文网页首页设计图片
  • 网站收录不好怎么办友情链接交换形式
  • 什么是网站建设规划书重庆关键词排名推广
  • wordpress主题php详解seo流量排名工具
  • 高端网站开发培训价格百度seo多少钱一个月
  • 济南网站建设服务开发一个网站需要哪些技术
  • 个网站能申请贝宝支付接口百度普通下载
  • 网站托管怎么做等保电工培训技术学校
  • 做网站用什么源码seo推广优化外包价格
  • 哪有备案好的网站友链交易
  • wordpress 4.1seo排名点击软件
  • 程序开发步骤不包括海南seo快速排名优化多少钱
  • 网站上线 flashseo免费优化公司推荐
  • 做网站的zk啥网站工具查询
  • 镇江网站建设武汉久都seo
  • 建一个平台网站一般需要多少钱看啥网一个没有人工干预的网