虚函数
virtual的作用
用来告诉该函数是一个虚函数。
override的作用
使代码具有可读性
告诉读者,该函数是要进行覆写的。
预防bug
加上override相当于告诉编译器,一定要找到对应的虚函数进行覆写,也就是说,如果没有对应的虚函数的话,那么将会报告错误。
虚函数所造成的损失/开销
内存损失/开销
虚函数会多要求去生成一张v(virtual)表。
这张v表,以便能从这些同名函数中挑选出真正需要到的那个函数。
除此之外,也需要在类中多开设单独的一个指针来指向这个v表。
时间损失/开销
在调用虚函数时,都会遍历整张表,从而找到正确的虚函数入口。
遍历这个过程本身就是一个耗费时间的过程。