基类中的函数一定要声明virtual才是虚的,在某个虚函数的第一个声明所在的那个类里,该函数必须予以实现(除非它被声明为纯虚函数)。如它被声明为纯虚函数,继承它的类必须予以实现。虚函数、纯虚函数的区别在于虚函数在本类要实现,纯虚函数不用。但有纯虚函数的类不能实例化,只能作为指针使用。
问题1:
Base 里没有virtual, 但是继承Base的A里是可以有的,如此base的函数就被覆盖了,除非明确说明对象要调用的是那个函数(如调用A::foo),否则被选用的总是最适合它的覆盖函数。
问题2:
B里的foo()的前面不需要标记,因A已标记了foo是虚函数。
问题3:
如果B里没写出来foo(),他能直接用A的foo()。调用跟普通用法一样.
B b;
b.foo();
Base 里没有virtual, 但是继承Base的A里可以有? ----可以有的
B里的foo()的前面不需要标记virtual喔? ------加不加都可以,不过建议加上,一看就知道