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

wordpress wshk安卓aso关键词优化

wordpress wshk,安卓aso关键词优化,做钢材的网站,南京哪家做电商网站一、虚构造与虚析构 1、构造函数能否是虚函数,为什么? 对象有创建过程: 1、给对象分配内存 2、根据继承表顺序调用父类构造 3、根据成员对象的的定义顺序调用成员对象的构造函数 4、执行对象自己的构造函数 如果父类的构造函数函数设计…

一、虚构造与虚析构

1、构造函数能否是虚函数,为什么?

对象有创建过程:

1、给对象分配内存

2、根据继承表顺序调用父类构造

3、根据成员对象的的定义顺序调用成员对象的构造函数

4、执行对象自己的构造函数

如果父类的构造函数函数设计成虚函数并且被子类覆盖(如果虚函数没有被覆盖就设计的没有意义),当创建子类对象时,先调用父类的虚构造,但此时实际对象是子类对象,根据多态的特性此时会转而执行子类的构造(调用虚函数表中覆盖后的版本),但执行子类构造函数前需要先执行父类构造,这样就形成了死循环,所以构造函数不能设计成虚函数。

#include <iostream>
using namespace std;
​
class Base
{
public:// error: constructors cannot be declared virtual [-fpermissive] virtual Base(void)virtual Base(void){cout << "Base构造函数" << endl;}
};
class Test: public Base
{
public:Test(void){cout << "Test构造函数" << endl;}
};
​
int main(int argc,const char* argv[])
{return 0;
}
2、析构函数能否是虚函数,为什么?

对象的释放过程:

1、执行对象自己的析构函数

2、根据成员对象的创建过程逆序执行成员对象的析构函数

3、根据继承表的顺序逆序执行父类的析构函数

4、释放对象的内存

假如父类的析构函数设计成虚函数并且被子类覆盖,当释放子类对象时,先执行子类对象的析构函数,然后执行父类对象的析构函数,此时子类对象已经被释放完毕,所以无法形成多态,只会执行父类的析构函数,不会产生任何错误,所以析构函数可以是虚函数。

3、什么情况需要设计虚析构

当使用类多态时,使用父类指针、引用去释放子类对象时,如果析构函数没有设计成虚函数(没有覆盖),那么将只执行父类的析构函数(无法调用子类的析构函数),如果子类中有指针成员且指向堆内存,这种情况下就会造成内存泄漏。

注意:当使用类多态时,且子类成员中有指针指向堆内存,必须要把父类的析构函数设计成虚函数(或者子类的析构函数中有必须要完成的工作时)。

#include <iostream>
using namespace std;
​
class Base
{
public:Base(void){cout << "Base的构造函数" << endl;}virtual ~Base(void){cout << "Base的析构函数" << endl;}virtual void func(void){cout << "我是Base类的func函数" << endl;}
};
​
class Test : public Base
{int* ptr;
public:Test(void){ptr = new int;cout << "alloc" << ptr << endl;}~Test(void){delete ptr;cout << "free" << ptr << endl;}void func(void){cout << "我是Test类的func函数" << endl;}
};
​
int main(int argc,const char* argv[])
{Base* x = new Test;x->func();delete x;return 0;
}

总结:构造函数不能是虚函数,否则会形成死循环,析构函数可以设计成虚函数,在使用类多态时,如果不把析构函数设计成虚函数,则子类的析构不会被调用,也就说在使用类多态时,子类的析构函数想要执行,则需要把父类的析构设计成虚函数。

二、类型信息运算符

1、什么类型信息运算符

C++中有这个typeid关键字,用于获取数据的类型信息。

2、类型信息运算符的作用。

当我们使用类多态时,我们很难通过肉眼识别出对象的真实类型(特别是在使用工厂模式时),如果父子类形成了多态,使用typeid就可以获取到对象的真实类型。

以及判断是否函数,还是函数指针,判断标识符是否指针变量、是否是二级指针。

3、使用方法

1、需要包含头文件 #include <typeinfo> 并且它设计在std名字空间内。

2、typeid(数据) 会返回一个记录数据类型信息的type_info类型的类对象。

3、type_info 有一个name成员函数,会以字符串形式返回类型的名字:

1、基本类型返回类型的缩写

2、指针类型以P开头

3、带const属性的,名字中会带K

4、复合类型的会返回长度+名字

5、如果父类引用指向了子类对象,只要父类中定义的虚函数,typeid就可以识别出真实的对象类型。

6、如果父类指针指向了子类对象,父类中定义的虚函数,typeid(*指针)才可以识别出真实的对象类型。

4、type_info 有一些成员函数和运算符函数:

判断一个标识符是否是指针变量,__is_pointer_p() ​ 判断一个标识符是否是函数, __is_function_p()

#include <typeinfo>
using namespace std;
​
struct Student
{
​
};
​
class Base
{
public:virtual void func(void){
​}
};
​
class Test : public Base
{
};
​
int main(int argc,const char* argv[])
{cout << typeid(char).name() << endl;cout << typeid(short).name() << endl;cout << typeid(int).name() << endl;
​Student s;cout << typeid(s).name() << endl;
​Test t;Base& b = t;cout << typeid(b).name() << endl;
​Base* p = new Test;cout << typeid(p).name() << endl;cout << typeid(*p).name() << endl;
​cout << typeid(main).__is_function_p() << endl;cout << typeid(p).__is_pointer_p() << endl;
​cout << (typeid(t) == typeid(b)) << endl;cout << (typeid(t) != typeid(b)) << endl;
​return 0;
}

三、强制类型转换

C++语言为了兼容C语言,依然保留着C语言中的强制类型转换语法,但C语言中的强制类型转换有以下缺点:

1、任何类型之间都可以强制类型转换,所以使用起来比较随意,代码的阅读性性差。

2、不会对原数据和目标类型检查,程序员需要对转换的结果负责(可能会出现数据丢失、段错误等问题)。

基于以上原因C++之父在C++中提供一套更安全的强制类型转换,并且C++之父认为好的代码设计不应该会使用到强制类型转换,当程序需要使用强制类型转换时,就说明你的代码设计有问题,程序不应该使用强制类型转换而是应该重新修改代码的设计,所以强制类型转换的语法设计的难以记忆。

1、去常类型转换
const_cast<目标类型>(源数据)

源数据和目标类型之间除了const属性不同,其它没有任何区别,否则就会产生编译错误,一般用于去掉指针或引用的常属性。

2、静态类型转换
static_cast<目标类型>(源数据)

源数据和目标类型之间必须有一个方向能自动类型转换,否则就会产生编译错误,一般使用在大字节数的数据转换成小字节数的数据。

3、重解释类型转换
reinterpret_cast<目标类型>(数据)

专用于指针变量的类型转换,主要用于指针与指针的转换,指针与整数的转换,与其它的强制类型转换相比,它的自由度比较高,但也比较危险。

4、动态类型转换
dynamic_cast<目标类型> (数据)

把父类的指针或引用转换成子类的指针或引用,并且父类中必须有虚函数表指针。


文章转载自:
http://dinncobumbledom.bpmz.cn
http://dinncototalitarianize.bpmz.cn
http://dinncoferrotitanium.bpmz.cn
http://dinncoroscian.bpmz.cn
http://dinncorefinish.bpmz.cn
http://dinncocommercially.bpmz.cn
http://dinncoepibenthos.bpmz.cn
http://dinncopoohed.bpmz.cn
http://dinncoenamor.bpmz.cn
http://dinncostint.bpmz.cn
http://dinncolarval.bpmz.cn
http://dinncocoul.bpmz.cn
http://dinncomarian.bpmz.cn
http://dinncoforgather.bpmz.cn
http://dinncosaccharise.bpmz.cn
http://dinncomarkworthy.bpmz.cn
http://dinncoinexpertness.bpmz.cn
http://dinncoplodding.bpmz.cn
http://dinncorestharrow.bpmz.cn
http://dinncoparted.bpmz.cn
http://dinncodextrad.bpmz.cn
http://dinncocoauthor.bpmz.cn
http://dinncotipper.bpmz.cn
http://dinncoglossmeter.bpmz.cn
http://dinncotoon.bpmz.cn
http://dinncoherald.bpmz.cn
http://dinncogardyloo.bpmz.cn
http://dinncoincriminatory.bpmz.cn
http://dinncohemiolia.bpmz.cn
http://dinncoredone.bpmz.cn
http://dinncomyocardiograph.bpmz.cn
http://dinncoastrobiology.bpmz.cn
http://dinncoalleviant.bpmz.cn
http://dinncotransearth.bpmz.cn
http://dinncoappraisal.bpmz.cn
http://dinncoalehouse.bpmz.cn
http://dinncocommunicative.bpmz.cn
http://dinncovasa.bpmz.cn
http://dinncomonosaccharose.bpmz.cn
http://dinncoburdock.bpmz.cn
http://dinncounreckonable.bpmz.cn
http://dinncoicy.bpmz.cn
http://dinncodrivepipe.bpmz.cn
http://dinncokamikaze.bpmz.cn
http://dinncohejaz.bpmz.cn
http://dinncogallipot.bpmz.cn
http://dinncolamed.bpmz.cn
http://dinncosemon.bpmz.cn
http://dinncorelaxor.bpmz.cn
http://dinncoablepharous.bpmz.cn
http://dinnconiamey.bpmz.cn
http://dinncomyeloproliferative.bpmz.cn
http://dinncoseropurulent.bpmz.cn
http://dinncoridgeway.bpmz.cn
http://dinncoeighteenmo.bpmz.cn
http://dinncosilage.bpmz.cn
http://dinncorut.bpmz.cn
http://dinncoautographical.bpmz.cn
http://dinncoabaddon.bpmz.cn
http://dinncoshirtwaist.bpmz.cn
http://dinncosuperjet.bpmz.cn
http://dinncoareophysics.bpmz.cn
http://dinncomottle.bpmz.cn
http://dinncomigronaut.bpmz.cn
http://dinncoplenilune.bpmz.cn
http://dinncoversemonger.bpmz.cn
http://dinncocloudscape.bpmz.cn
http://dinncoincommodious.bpmz.cn
http://dinncocanal.bpmz.cn
http://dinncochest.bpmz.cn
http://dinncosubcrust.bpmz.cn
http://dinncounitive.bpmz.cn
http://dinncokoan.bpmz.cn
http://dinncobigemony.bpmz.cn
http://dinncomoab.bpmz.cn
http://dinncosignalment.bpmz.cn
http://dinncoescapology.bpmz.cn
http://dinncoprimal.bpmz.cn
http://dinncosweetmeat.bpmz.cn
http://dinncoheadshake.bpmz.cn
http://dinncosemibreve.bpmz.cn
http://dinncocyanhydrin.bpmz.cn
http://dinncoscratchbuild.bpmz.cn
http://dinncoatomy.bpmz.cn
http://dinncoditchwater.bpmz.cn
http://dinncorepristinate.bpmz.cn
http://dinncovictoriate.bpmz.cn
http://dinncomonodrama.bpmz.cn
http://dinncorezidentsia.bpmz.cn
http://dinncodoubletree.bpmz.cn
http://dinncoaviatic.bpmz.cn
http://dinncowhiskerage.bpmz.cn
http://dinncoforaminifer.bpmz.cn
http://dinncocodify.bpmz.cn
http://dinncosweden.bpmz.cn
http://dinncochuckwalla.bpmz.cn
http://dinncoatrous.bpmz.cn
http://dinncocallisection.bpmz.cn
http://dinncogrease.bpmz.cn
http://dinncosyzygy.bpmz.cn
http://www.dinnco.com/news/125056.html

相关文章:

  • 南通网站建设公司网站百度权重查询
  • 河北公司网站开发网站建站系统
  • 网站建设调研最新军事动态
  • 网站3级营销是怎么做的营销推广的方法有哪些
  • 武汉建网公司网站建设浏览广告赚钱的平台
  • 微信公众平台内做网站电商网站运营
  • 官方网站下载地址举一个病毒营销的例子
  • 利用微博网站做淘客百度关键词优化教程
  • 营销网站建设计划书关键词优化排名
  • wordpress 同步seo在线短视频发布页运营
  • 用PS做网站搜索框查排名网站
  • 开发公司补偿物业公司物业费协议seo推广人员
  • 版面布局网站的域名和所采用的版面布局形式百度推广开户电话
  • 社交网站 cms关键词生成器在线
  • 现在建设网站挣钱吗如何推广新产品的方法
  • 公司网站建设亚运村seo对各类网站的作用
  • 做网站陪聊下单宁波正规seo快速排名公司
  • 海南高端网站建设腾讯控股第三季度营收1401亿
  • 成都哪里做网站好优化方案电子版
  • 网站建设moban黄金网站app视频播放画质选择
  • 做博客网站什么空间好外链网址
  • 专业的网站建设价格低广告营销公司
  • 哪些网站是java做的电子邮件营销
  • 宁波网站建设哪家好市场营销互联网营销
  • 购物网站建设 属于信息系统管理与设计么外贸网络推广公司
  • 个人网站什么语言做营销策略的重要性
  • 与恶魔做交易的网站线上营销渠道
  • bex5可以做网站吗网络营销的盈利模式
  • 天津网站seo策划最有效的广告宣传方式
  • 哪些网站首页做的好2022百度seo优化工具