在java中,(override重写)方法默认是支持动态绑定,通过这种方式Java实现多态;也就是当父类引用指向一个子类对象时,会根据指向的对象实际类型决定调用的方法实现;
在C++中,默认是不支持这种功能的,要实现类似的功能,方法需要声明成虚函数,也就是要用virtual关键字修饰;
注意:在父类中声明的虚函数,在子类中如果有相同的函数声明,即使子类函数不加virtual关键字,函数也是虚函数
虚函数可以有默认实现,类似于Java中的抽象类中有默认实现的方法
下文引自虚函数必须实现么????
如果要定义一个抽象类,例如Shape来抽象所有的形状,其方法最好定义成纯虚函数
非虚函数的虚函数如果未实现会报链接错误,如下
纯虚函数
纯虚函数更多的是为了提供接口,纯虚函数不能有默认实现
语法:virtual void fun()=0;
纯虚函数可以类比Java接口方法和抽象类中的被抽象方法