gpt4 book ai didi

c++ - 为什么需要 virtual 关键字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:04 29 4
gpt4 key购买 nike

换句话说,为什么编译器不只是“知道”如果函数的定义在派生类中发生了变化,并且指向该派生类的动态分配内存的指针调用了变化的函数,那么该函数特别是应该调用而不是基类的?

在什么情况下使用 virtual 关键字对程序员没有好处?

最佳答案

virtual 关键字告诉编译器实现动态调度。这就是语言的设计方式。如果没有这样的关键字,编译器将不知道是否要实现动态调度。

virtual 或一般动态调度的缺点是,

  • 它有轻微的性能损失。大多数编译器会使用 vtable 和 vptr 机制实现动态调度,其中要调用的适当函数是通过 vtable 决定的,因此在动态调度的情况下需要额外的间接寻址。
  • 它使您的类(class)成为非 POD。

关于c++ - 为什么需要 virtual 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600934/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com