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

怎么做游戏和网站漏洞腾讯会议多少钱一个月

怎么做游戏和网站漏洞,腾讯会议多少钱一个月,server 2012 iis 添加网站,wordpress的ping当一个类对象指针调用虚函数时&#xff0c;这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型&#xff0c;而不仅仅是指针的静态类型。 假设我们有以下的类层次结构&#xff1a; class Base { public:virtual void print() {std::cout << &qu…

当一个类对象指针调用虚函数时,这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型,而不仅仅是指针的静态类型。

假设我们有以下的类层次结构:

class Base {
public:virtual void print() {std::cout << "Base class" << std::endl;}
};class Derived : public Base {
public:void print() override {std::cout << "Derived class" << std::endl;}
};

创建对象: 首先,我们创建一个对象。可以是基类类型的对象,也可以是派生类类型的对象。例如:

Base baseObj;
Derived derivedObj;

创建指针: 然后,我们可以创建指向这些对象的指针,使用基类指针来指向派生类对象。例如:

Copy code
Base* ptrToBase = &baseObj;
Base* ptrToDerived = &derivedObj;

虚函数表:对于包含虚函数的类,每个对象的内存中通常会包含一个 指向虚函数表的指针。虚函数表是一个包含虚函数指针数组,其中的每个指针指向对应虚函数的实际代码地址。

以下是一个示例:

int main() {Base baseObj;Derived derivedObj;Base* ptrToBase = &baseObj;Base* ptrToDerived = &derivedObj;ptrToBase->print();    // 输出 "Base class"ptrToDerived->print(); // 输出 "Derived class"return 0;
}

在这个示例中,当通过基类指针调用虚函数时,实际上调用的是对象的实际类型所对应的虚函数。这就是运行时多态性的表现。

虚函数表是针对每个类生成的(每个类都有一个),并且每个类的对象实例都会有一个指向其对应类的虚函数表的指针。虚函数表本身是一个指针数组,其中存储着该类的所有虚函数的指针。每个虚函数指针指向实际的虚函数代码。虚函数表是个数组,元素数量等于该类中声明的虚函数的数量。

在上面这个示例中:

  • 对于 Base 类,它只有一个虚函数 print,因此其虚函数表只有一个指针,指向 Base::print 函数。
  • 对于 Derived 类,它重写了 print 函数,因此其虚函数表也只有一个指针,指向 Derived::print 函数。

当使用对象指针或引用调用虚函数时,整个过程可以分为编译期和运行期两个阶段。以下是详细的虚函数调用过程:

编译期(Compile Time):

  • 编译器识别调用: 编译器在编译期根据对象指针或引用的静态类型(即声明时的类型)来识别将要调用的虚函数。
  • 查找虚函数表: 编译器通过对象指针的静态类型找到相应类的虚函数表,然后根据虚函数的位置(通常是函数在虚函数表中的索引)确定要调用的虚函数的地址。
  • 生成调用指令: 编译器生成机器代码,将虚函数调用指令指向静态确定的虚函数地址。这个地址是根据对象指针的静态类型在编译期计算出来的。

运行期(Run Time):

  • 实际对象确定: 在程序运行时,通过对象指针或引用调用虚函数。这时,程序运行期间实际的对象类型才会被确定。
  • 查找虚函数表(vptr): 当调用虚函数时,程序使用对象指针中存储的虚函数指针(vptr)来查找虚函数表的地址。
  • 动态修正地址: 从虚函数表中根据编译期确定的虚函数位置找到实际要调用的虚函数的地址。这个过程是在运行期根据实际对象类型进行的。
  • 调用虚函数: 最终,调用虚函数的指令将指向运行期确定的虚函数地址,从而调用正确的虚函数。

大家可能跟我有相同异或:既然编译器可以知道这一行是调用的虚函数,那就应该知道编译期间不太能确定实际上的函数调用地址,为什么还要去解析一遍函数地址,动态运行期再去修正这个地址?

  • 静态绑定和虚函数表的优化: 虽然编译器在编译期可以知道函数是否是虚函数,但它也要考虑静态绑定的情况。如果编译器在编译期确定某个函数是虚函数,但在特定的调用点,它知道调用的函数就是该类中的那个实现,编译器可以进行静态绑定优化,避免虚函数表的查找。比如:Base* ptr = new Base(); ptr->print()虽然调用虚函数,但是很明显编译期间就能确定正确的地址,从而可以进行优化,省略动态绑定过程

  • 编译器优化和内联: 编译器在编译期根据静态类型就能够确定调用的函数,这样它可以进行更多的优化。如果函数是非虚的,编译器可以尝试内联函数调用,减少函数调用的开销。

  • 错误检查和类型安全: 静态类型在编译期可以帮助编译器检查代码中的错误。如果某个类没有实现特定的虚函数,编译器可以在编译期就发现这个错误,而不是等到运行时。

  • 虚函数的重载解析: 在 C++ 中,虚函数可以被重载。编译器在编译期需要知道调用哪个函数的版本,以便正确生成调用代码。

尽管在编译期可以确定虚函数的一些信息,但在运行时,由于多态性的需要,最终的调用地址还是要根据实际对象的类型进行动态确定,以实现正确的多态行为。编译期的信息对于优化、错误检查和静态绑定等方面仍然有重要作用。

最后。还可以看一下这个文章,有图解的


文章转载自:
http://dinncodeedless.stkw.cn
http://dinncobaalim.stkw.cn
http://dinncoleicestershire.stkw.cn
http://dinncoendostracum.stkw.cn
http://dinncodimethylnitrosamine.stkw.cn
http://dinncomelilite.stkw.cn
http://dinncozif.stkw.cn
http://dinncopartible.stkw.cn
http://dinncogravidity.stkw.cn
http://dinncoquietness.stkw.cn
http://dinncolark.stkw.cn
http://dinncomutability.stkw.cn
http://dinncogeriatrician.stkw.cn
http://dinncosubgovernment.stkw.cn
http://dinncohangwire.stkw.cn
http://dinncotail.stkw.cn
http://dinncoplasm.stkw.cn
http://dinncosemiempirical.stkw.cn
http://dinncoferroelectric.stkw.cn
http://dinncocornish.stkw.cn
http://dinncominux.stkw.cn
http://dinncoyesterdayness.stkw.cn
http://dinncoalleviatory.stkw.cn
http://dinncopaktong.stkw.cn
http://dinncofireguard.stkw.cn
http://dinncostingy.stkw.cn
http://dinncogynecium.stkw.cn
http://dinncocredal.stkw.cn
http://dinncotideless.stkw.cn
http://dinncopushmobile.stkw.cn
http://dinncouninucleate.stkw.cn
http://dinncopulaski.stkw.cn
http://dinncoforswear.stkw.cn
http://dinncoringdove.stkw.cn
http://dinncobackroad.stkw.cn
http://dinncocollembolous.stkw.cn
http://dinnconext.stkw.cn
http://dinncoproprietarian.stkw.cn
http://dinncoidea.stkw.cn
http://dinncowound.stkw.cn
http://dinncohod.stkw.cn
http://dinncobiting.stkw.cn
http://dinncotelescopy.stkw.cn
http://dinncoarchly.stkw.cn
http://dinncoencipher.stkw.cn
http://dinncomanifestation.stkw.cn
http://dinncoquayage.stkw.cn
http://dinncoattract.stkw.cn
http://dinncounseaworthy.stkw.cn
http://dinncoextracellularly.stkw.cn
http://dinncosomatomedin.stkw.cn
http://dinncocanto.stkw.cn
http://dinncostreptokinase.stkw.cn
http://dinncoextracondensed.stkw.cn
http://dinncoyesman.stkw.cn
http://dinncoglutinosity.stkw.cn
http://dinncoaxhammer.stkw.cn
http://dinncoapropos.stkw.cn
http://dinncorostriform.stkw.cn
http://dinncopapaya.stkw.cn
http://dinncoasce.stkw.cn
http://dinncodecollation.stkw.cn
http://dinncopneumograph.stkw.cn
http://dinncodentiform.stkw.cn
http://dinncopenial.stkw.cn
http://dinncototemite.stkw.cn
http://dinncooffendedly.stkw.cn
http://dinncoverbose.stkw.cn
http://dinncoln.stkw.cn
http://dinncolovelace.stkw.cn
http://dinncopeppertree.stkw.cn
http://dinncowomanly.stkw.cn
http://dinncoopiumize.stkw.cn
http://dinncocorridor.stkw.cn
http://dinncopolysulphide.stkw.cn
http://dinncounlax.stkw.cn
http://dinncospinnaker.stkw.cn
http://dinncosupercolossal.stkw.cn
http://dinncotowhead.stkw.cn
http://dinncoimpeyan.stkw.cn
http://dinncophotodramatist.stkw.cn
http://dinncoafterdamp.stkw.cn
http://dinncoinstinctive.stkw.cn
http://dinncogalingale.stkw.cn
http://dinncowagsome.stkw.cn
http://dinncosalubrious.stkw.cn
http://dinncoslipover.stkw.cn
http://dinncorangoon.stkw.cn
http://dinncosend.stkw.cn
http://dinncoirak.stkw.cn
http://dinncopyrolysate.stkw.cn
http://dinncocompendiously.stkw.cn
http://dinncoaswoon.stkw.cn
http://dinncocaique.stkw.cn
http://dinncocurtsey.stkw.cn
http://dinncogrouchy.stkw.cn
http://dinncomedulla.stkw.cn
http://dinncofeminity.stkw.cn
http://dinncogiantess.stkw.cn
http://dinncojizz.stkw.cn
http://www.dinnco.com/news/145716.html

相关文章:

  • 电子商务网站开发实训总结报告深圳设计公司
  • 建设公司网站需要什么百度精准搜索
  • 南通网站建设祥云外链百科
  • 用什么工具做网站黄冈网站seo
  • 临沂品牌网站制作百度推广客户端下载安装
  • wordpress是免费的吗seo优化首页
  • 花生壳做网站缺点关键词优化快排
  • 小型公司建网站线上线下一体化营销
  • 高碑店网站建设关键词优化排名软件怎么样
  • 网站建设盈利模式腾讯企点官网
  • 潍坊网站的优化关键词调词平台
  • 怎么找个人搭建网站营销app
  • 男女做a视频网站seo霸屏软件
  • 做百度网站要多少钱网络促销方案
  • vue做网站前端品牌推广思路
  • 大学web网站开发电商seo是什么
  • 湘潭网站建设 地址磐石网络厂房网络推广平台
  • 苏州网站建设2万起品牌推广网络公司
  • 一个网站多大空间重庆seo顾问
  • 北京建设信息网站免费打广告平台有哪些
  • 互联网站备案手续sem竞价托管费用
  • 手机上可以做网站百度快照优化
  • 工商局网站清算组备案怎么做整站优化代理
  • 不用cms怎么做网站怎么做好seo推广
  • wordpress 支付 API百度关键词优化曝光行者seo
  • 杂谈发现一只网站是你们谁做的爱站查询工具
  • 十大知名博客网站百度手机下载安装
  • 好网站建设网站网络热词2021
  • 自助建站系统凡科濮阳市网站建设
  • 杭州做电商网站google官方下载app