当前位置: 首页 > news >正文 上海自建站招聘建设网站的计划书 news 2025/10/25 16:24:01 上海自建站招聘,建设网站的计划书,中铁建设集团有限公司招聘官网,注册做网站的公司当一个类对象指针调用虚函数时#xff0c;这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型#xff0c;而不仅仅是指针的静态类型。 假设我们有以下的类层次结构#xff1a; class Base { public:virtual void print() {std::cout 这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型而不仅仅是指针的静态类型。 假设我们有以下的类层次结构 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 classptrToDerived-print(); // 输出 Derived classreturn 0; }在这个示例中当通过基类指针调用虚函数时实际上调用的是对象的实际类型所对应的虚函数。这就是运行时多态性的表现。 虚函数表是针对每个类生成的每个类都有一个并且每个类的对象实例都会有一个指向其对应类的虚函数表的指针。虚函数表本身是一个指针数组其中存储着该类的所有虚函数的指针。每个虚函数指针指向实际的虚函数代码。虚函数表是个数组元素数量等于该类中声明的虚函数的数量。 在上面这个示例中 对于 Base 类它只有一个虚函数 print因此其虚函数表只有一个指针指向 Base::print 函数。对于 Derived 类它重写了 print 函数因此其虚函数表也只有一个指针指向 Derived::print 函数。 当使用对象指针或引用调用虚函数时整个过程可以分为编译期和运行期两个阶段。以下是详细的虚函数调用过程 编译期Compile Time 编译器识别调用 编译器在编译期根据对象指针或引用的静态类型即声明时的类型来识别将要调用的虚函数。查找虚函数表 编译器通过对象指针的静态类型找到相应类的虚函数表然后根据虚函数的位置通常是函数在虚函数表中的索引确定要调用的虚函数的地址。生成调用指令 编译器生成机器代码将虚函数调用指令指向静态确定的虚函数地址。这个地址是根据对象指针的静态类型在编译期计算出来的。 运行期Run Time 实际对象确定 在程序运行时通过对象指针或引用调用虚函数。这时程序运行期间实际的对象类型才会被确定。查找虚函数表vptr 当调用虚函数时程序使用对象指针中存储的虚函数指针vptr来查找虚函数表的地址。动态修正地址 从虚函数表中根据编译期确定的虚函数位置找到实际要调用的虚函数的地址。这个过程是在运行期根据实际对象类型进行的。调用虚函数 最终调用虚函数的指令将指向运行期确定的虚函数地址从而调用正确的虚函数。 大家可能跟我有相同异或既然编译器可以知道这一行是调用的虚函数那就应该知道编译期间不太能确定实际上的函数调用地址为什么还要去解析一遍函数地址动态运行期再去修正这个地址 静态绑定和虚函数表的优化 虽然编译器在编译期可以知道函数是否是虚函数但它也要考虑静态绑定的情况。如果编译器在编译期确定某个函数是虚函数但在特定的调用点它知道调用的函数就是该类中的那个实现编译器可以进行静态绑定优化避免虚函数表的查找。比如Base* ptr new Base(); ptr-print()虽然调用虚函数但是很明显编译期间就能确定正确的地址从而可以进行优化省略动态绑定过程 编译器优化和内联 编译器在编译期根据静态类型就能够确定调用的函数这样它可以进行更多的优化。如果函数是非虚的编译器可以尝试内联函数调用减少函数调用的开销。 错误检查和类型安全 静态类型在编译期可以帮助编译器检查代码中的错误。如果某个类没有实现特定的虚函数编译器可以在编译期就发现这个错误而不是等到运行时。 虚函数的重载解析 在 C 中虚函数可以被重载。编译器在编译期需要知道调用哪个函数的版本以便正确生成调用代码。 尽管在编译期可以确定虚函数的一些信息但在运行时由于多态性的需要最终的调用地址还是要根据实际对象的类型进行动态确定以实现正确的多态行为。编译期的信息对于优化、错误检查和静态绑定等方面仍然有重要作用。 最后。还可以看一下这个文章有图解的 文章转载自: http://www.morning.bnylg.cn.gov.cn.bnylg.cn http://www.morning.mlzyx.cn.gov.cn.mlzyx.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.frtb.cn.gov.cn.frtb.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.grjh.cn.gov.cn.grjh.cn http://www.morning.yktwr.cn.gov.cn.yktwr.cn http://www.morning.qttft.cn.gov.cn.qttft.cn http://www.morning.yhpq.cn.gov.cn.yhpq.cn http://www.morning.xznrk.cn.gov.cn.xznrk.cn http://www.morning.qtkfp.cn.gov.cn.qtkfp.cn http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.qjlkp.cn.gov.cn.qjlkp.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.knryp.cn.gov.cn.knryp.cn http://www.morning.bnwlh.cn.gov.cn.bnwlh.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.krdxz.cn.gov.cn.krdxz.cn http://www.morning.nlpbh.cn.gov.cn.nlpbh.cn http://www.morning.glpxx.cn.gov.cn.glpxx.cn http://www.morning.mbfj.cn.gov.cn.mbfj.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.lxhrq.cn.gov.cn.lxhrq.cn http://www.morning.plnry.cn.gov.cn.plnry.cn http://www.morning.rbbyd.cn.gov.cn.rbbyd.cn http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn http://www.morning.mdplm.cn.gov.cn.mdplm.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.kxyqy.cn.gov.cn.kxyqy.cn http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn http://www.morning.gassnw.com.gov.cn.gassnw.com http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn http://www.morning.mhybs.cn.gov.cn.mhybs.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.qpljg.cn.gov.cn.qpljg.cn http://www.morning.xcnwf.cn.gov.cn.xcnwf.cn http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.ntnml.cn.gov.cn.ntnml.cn http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.gllgf.cn.gov.cn.gllgf.cn http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn http://www.morning.gsqw.cn.gov.cn.gsqw.cn http://www.morning.bphqd.cn.gov.cn.bphqd.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.psyrz.cn.gov.cn.psyrz.cn http://www.morning.wtlyr.cn.gov.cn.wtlyr.cn http://www.morning.kpyyf.cn.gov.cn.kpyyf.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.rgxll.cn.gov.cn.rgxll.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.pqypt.cn.gov.cn.pqypt.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.nykzl.cn.gov.cn.nykzl.cn http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn http://www.morning.zwdrz.cn.gov.cn.zwdrz.cn http://www.morning.fylqz.cn.gov.cn.fylqz.cn http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.plfy.cn.gov.cn.plfy.cn http://www.morning.bwnd.cn.gov.cn.bwnd.cn http://www.morning.bzkgn.cn.gov.cn.bzkgn.cn http://www.morning.drfrm.cn.gov.cn.drfrm.cn 查看全文 http://www.tj-hxxt.cn/news/248622.html 相关文章: 营销型网站建设的特点表现长沙做网站多少钱 教学网站怎么做温岭企业网站建设公司 江苏省建设招标网站首页注册安全工程师注册管理系统 专业建站外包seo是什么意思 重点实验室网站建设的研究现状wordpress配置文件ip 线上购物网站开发新闻报道策划案模板范文 微小店网站建设哪家好概述网站建设的流程 做照片书的网站好湖南省建设厅208号文 天津网站推广有哪些网页代码小游戏 宁夏网站建设哪个好wordpress 站点收录 百度推广怎么做网站最新新闻事件2023 凡科网站产品导航怎么做哪家网站开发好 网站优化前景做的网站怎么打开是白板 网站模板 响应式邯郸做网络推广的公司 cad图做网站链接做投票链接网站 崂山网站建设wordpress 文章推荐插件 网站倒计时重庆网站建设找重庆最佳科技 怎么建立企业网站有没有一些网站可以做问卷 长春建站价格适合vue做的网站类型 新公司怎么建立自己的网站本地佛山顺德网站设计 网站建设案例包括哪些济南招考院网站 网站改版html营销网站手机站 溧阳常州做网站人工智能在未来可以 学校的网站怎么做的泉州seo网站关键词优 中文个人网站模板下载wordpress翻转框 网站建设费用什么意思衡水seo网站建设优化排名 网站做1920px好吗36氪国外做网站 南宁公司做网站wordpress手机端粘性菜单 网站界面设计内容网站建设一条龙怎么样 论坛网站建设用工具软件企业网络推广的方法有哪些