其他的大致都和java中的类似,基类的指针去指向子类对象 ,只不过在java中貌似所有基类函数都被默认成为了虚函数
即:
class Father {...}
class Child extends Father{.....}
Father f = new Child();
f.function();
上述代码在java中执行,如果子类和父类都具有function这个方法的话,肯定是会调用子类的function方法的。
然而,这一点在c++中有很好的控制的。 代码:
// Test1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" using namespace std; class Base{ public: virtual void lihanTest(){ cout<<"base function "; } }; class Child1:public Base{ void lihanTest(){ cout<<"child1 function"; } }; class Child2:public Base{ void lihanTest(){ cout<<"child2 function"; } }; int main(){ Base *b = new Child2; b->lihanTest(); }
基类中声明为虚函数,这么样,派生类的方法得以调用
若不声明为virtual的话,则会调用基类方法。