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

怎样注册一个自己的网站找网站建设公司

怎样注册一个自己的网站,找网站建设公司,广东省住房和建设局官方网站,Wordpress 插件开发者下面是对该问题的一种常见回答: 首先,内联是程序员对编译器的一种建议,因此可以在在重载虚函数时在声明处加上inline关键字来修饰, 但是因为虚函数在运行时通过查找虚函数表调用的,而内联函数在编译时进行代码嵌入&…
下面是对该问题的一种常见回答:

首先,内联是程序员对编译器的一种建议,因此可以在在重载虚函数时在声明处加上inline关键字来修饰,
但是因为虚函数在运行时通过查找虚函数表调用的,而内联函数在编译时进行代码嵌入,因此在编译时编译器不接受虚函数变为内联函数的建议。

如果你只是背八股,那么该问题到此为止。


但是很明显,内联是对编译器的建议,cpp reference也没有规定是否应该内联重载了的虚函数(反正我是没找到,但如果有请告诉我出处,感谢!),因此这个问题又要根据具体编译器来分析了。

测试代码:
#include <cstdio>class Base {
public:void test() {int i = 10;printf("Base::test<%p>\n", &i);}virtual void fun() {int i = 11;printf("Base::fun<%p>\n", &i);}
};class Son: public Base{
public:inline virtual void fun() override {int i = 12;printf("Son::fun<%p>\n", &i);}
};int main()
{Son son;Base base;Base * base_son = new Son;// 最大优化下:// test()没有多态性,编译器判断可以内联son.test();        // 10base.test();       // 10base_son->test();  // 10son.fun();         // 12:没有表现出多态性,内联base.fun();        // 11:没有表现出多态性,内联base_son->fun();   // 12:表现出多态性,gcc和msvc没内联,clang内联了//! 不懂clang,似乎它在编译时能判断多态,不过想想也是,似乎是这里的多态代码过于简单了,//! Base * base_son = new Son; 这一句一看就知道base_son调用具有多态性的函数时调用的是子类的重载函数,//! 还可以使用更复杂的测试代码,我就懒得搞了,毕竟这个问题和编译器相关return 0;
}

在开启最大优化时,各编译器的表现(在Compiler Explorer网站测试):
该测试并不严谨,只是菜鸡的随手一试罢了,有任何问题可以评论或私信来探讨。

在gcc中:

可以看到在开启最大优化时,虚函数是否重载为内联是取决于该虚函数是否在使用处表现出多态性,若有表现出多态性则不内联,否则内联之
在这里插入图片描述

在clang中:

clang更聪明,它直接内联了展示出多态性的代码,不过似乎是这里的测试代码过于简单,使得多态性一眼丁真,需要多态性更复杂的代码来测试,但是我懒,也不懂clang
在这里插入图片描述

在msvc中:

msvc在汇编代码中判断了重载的虚函数调用是否展现多态性,在图中的cmp rdx rax处,如果虚函数表第一项不是Son::fun则进行虚函数表中的函数调用,这明显就是展现了多态性进行的调用;如果没展现多态性,则执行下面的内联了的Son::fun,因此可以看出msvc的汇编代码既给出了Son::fun未内联的函数调用,也给出了Son::fun内联了的汇编代码
在这里插入图片描述


因此可以得出一个不是很严谨的结论:

  • 在未表现出多态性时,重载的虚函数会被编译器内联;
  • 在表现出多态性时,重载的虚函数不会被编译器内联,但是如果多态代码过于简单,clang则会内联;
http://www.yayakq.cn/news/114881/

相关文章:

  • 深信服对单一网站做限速北京东城做网站
  • 静态html网址网站导航源码东莞免费企业网站建设
  • 怎么建小说网站王者荣耀是哪家公司开发的
  • 雅安市建设局网站深圳网站建设公司流程
  • 电商网站运营网站小logo设计
  • 响水做网站建立网站大概投入
  • 网站容量wordpress临时关闭
  • 网站建设的技术外贸论坛买家信息网
  • 建立网站需要多长钱厦门网站设计公司找哪家厦门小程序建设
  • 查网站是不是用shopify做的dw网页制作使用方法
  • 郑州好的网站设计公司几个月网站没有排名
  • 上海大学生做网站的团队设计师图库网站
  • 自己网站服务器开发网站需要多少人
  • 儿童网站源码免费建企业网站
  • 仿各个网站的问题如何建立国际网站
  • 网站开发入门书籍2018电子商务网站建设评估工具
  • 个人网站需要多大空间谷歌网页版入口在线
  • 深圳免费模板建站网络营销的seo是做什么的
  • 做企业网站能赚钱吗?郑州网站优化网络建设有限公司
  • 东莞企业建站平台每天试用三小时vp加速器
  • 成都建站网站小说网站开发流程具体
  • 做网站海报苏州seo外包
  • 医院网站建设的话术网站建设电话
  • 怎么做网站有利于收录一个网站需要多少容量
  • 高校服务地方专题网站建设如何检测做的网站的兼容性
  • 网站ftp查询直播网站源码免费
  • 久治县wap网站建设公司宁波网上预约挂号平台
  • 南昌网站开发技术手机单页网站通用模板
  • 贵阳市住房城乡建设局官方网站北京外包做网站如何报价
  • 上海企业网站制作报价南宁网站排名优化