C++面向对象编程之虚指针、虚表
1.当编译器看到一个函数调用,有2个考量:静态绑定or动态绑定
静态绑定是"call xxx",xxx 是表示地址,call 是汇编语言的一个动作,它一定会调用到某个地址;
当符合以下3个条件时会进行动态绑定:
1)是通过指针来调用
2)这个指针是向上转型的,就是这个指针 new 了一头猪,而声明的类型是其父类——动物,这样就是向上转型
3)调用的是虚函数
1.当编译器看到一个函数调用,有2个考量:静态绑定or动态绑定
静态绑定是"call xxx",xxx 是表示地址,call 是汇编语言的一个动作,它一定会调用到某个地址;
当符合以下3个条件时会进行动态绑定:
1)是通过指针来调用
2)这个指针是向上转型的,就是这个指针 new 了一头猪,而声明的类型是其父类——动物,这样就是向上转型
3)调用的是虚函数