b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

是否可以内联构造函数,析构函数,虚函数,意义何在?

电脑杂谈  发布时间:2020-05-06 20:32:30  来源:网络整理

汽内构造图片_构造函数 内联_防火门锁构造内部图

首先,您需要了解可以将构造函数析构函数虚函数声明为内联函数,这在语法上是正确的.

防火门锁构造内部图_汽内构造图片_构造函数 内联

如果以下代码正确,因为内联与register相同,因此仅是一个建议. 编译器不一定真正内联,也没有语法错误:

防火门锁构造内部图_构造函数 内联_汽内构造图片

需要考虑的是构造函数,析构函数和虚拟函数是内联声明的,还是编译器确实是内联这些函数的?

汽内构造图片_构造函数 内联_防火门锁构造内部图

让我们首先看一下构造函数和析构函数. 请参阅Effective C ++构造函数 内联,以了解将构造函数和析构函数声明为内联是没有意义的,也就是说,编译器并未真正声明并构造内联函数内联,因为编译器会添加其他操作(应用/释放内存,在构造函数和析构函数中构造/破坏对象等),以使构造函数/析构函数不像看上去那样精简.

构造函数 内联_汽内构造图片_防火门锁构造内部图

有人认为虚拟函数被声明为内联,但是编译器没有内联它们. 他们给出的原因是构造函数 内联,内联是在编译时确定的,而虚函数是在运行时确定的,也就是说,在调用哪个函数的情况下,如何内联该函数?

以上观点看来是正确的,但事实并非如此. 如果在编译器可以决定调用哪个函数时可以内联虚拟函数,那么在什么情况下编译器可以确定要调用哪个函数,答案是何时使用对象在调用虚函数时,它会内联扩展.

总而言之,当指向派生类的指针调用声明为内联的虚函数时,它将不会内联扩展;当对象调用虚拟函数时,它将内联展开.

通过指针或引用引用对象时,无法内联对虚拟函数的调用,因为该调用必须动态解析. 原因: 编译器直到运行时(动态地)才知道要调用哪个实际代码,因为该代码可能来自于在调用者被编译之后创建的派生类.

因此,只有当编译器知道作为虚拟函数调用目标的对象的“精确类”时,才可以内联一个虚拟调用. 仅当编译器具有实际对象而不是指针或对对象的引用时,才会发生这种情况. 也就是说,可以是本地对象,全局/静态对象,也可以是复合材料内部完全包含的对象.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-200956-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...