C++虚函数表
在我们使用虚函数的时候会多出四个字节大小的指针,这个指针指向的就是虚函数表。
虚函数是通过虚函数表来实现的,解决了继承覆盖 保证反应的是真实的函数 虚
函数表出现的位置是在最前面 也就是在编译的过程中就创建了
而虚函数指针是在实列化对象的时候 对象创建的时候 运行时创建
这样来实现函数的多态
C++ 多态
多态就是一种事物在不同情况下的不同形态
静态多态就是在编译期间完成的,编译器会通过合适的函数来调用合适的函数,如果可以就调,不行就报错
动态多态 是在程序运行时根据基类指针指向的对象来明确自己调用哪一个类的虚函数
所以说,实现函数多态必须满足两个条件,父类有虚函数,并且子类一定要对父类的虚函数进行重写。
- 通过父类的指针或者引用来调用
- 总结一道面试题:那些函数不能定义为虚函数?
经检验下面的几个函数都不能定义为虚函数:
1)友元函数,它不是类的成员函数
2)全局函数
3)静态成员函数,它没有this指针
3)构造函数,拷贝构造函数,以及赋值运算符重载(可以但是一般不建议作为虚函数)