换句话说,为什么编译器不“知道”如果函数的定义在派生类中发生更改,并且指向该派生类动态分配的内存的指针调用更改后的函数,那么该函数特别应该被称为而不是基类的?
在什么情况下,使用 virtual 关键字对程序员没有好处?
virtual
关键字告诉编译器执行动态调度.这就是语言的设计方式。
如果没有这样的关键字,编译器将不知道是否实现动态分派。
缺点是virtual
或一般的动态调度是,
- 它有轻微的性能损失。大多数编译器会使用 vtable 和 vptr 机制来实现动态调度,其中要调用的适当函数是通过 vtable 决定的,因此在动态调度的情况下需要额外的间接寻址。
- 它使您的班级成为非 POD。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)