摘要:
静态多态就是函数重载 动态多态是使用虚函数来实现的。如下面的demo中虽然test()方法是以A&类型接收的参数,但是还是会调用子类的func()。这是由虚函数实现的。如果父类中的函数没有加virtual,那么用父类指针接收到子类对象也仅是把子类中父类的部分单独看成了一个父类对象,调用的还是父类对象 阅读全文
摘要:
父类中加了虚函数,则在对象的开始位置会分配出一个指针位置来指向虚函数表,表中记录虚函数。而子类对象的起始位置本来就是一个父类对象,当然就包含了开始位置的这个指针。所以一个有虚函数的空的类和它的子类大小都是一个指针的大小。 虚函数表中记录了函数的真实地址。由下图的调试结果验证出如果子类中没有重写这个虚 阅读全文