c++和java的多态性的差别

c++和java的多态性的区别
java的多态性:
java的多态性要满足三个条件:1、继承关系;2、在子类重写父类的函数;3、父类引用指向子类对象,即 animal p=new dog();


c++的多态性:

c++的多态性要满足三个条件:1、继承关系;2、父类函数有virtual关键字,在子类重写父类的函数;3、父类指针指向子类对象,即 animal *p=new dog(); 或 dog d; animal *p=&d;


c++多态的例子:

class animal
{
public:
	virtual void enjoy()
	{
		cout << "叫声。。。" << endl;
	}
};

class dog:public animal
{
public:
	void enjoy()
	{
		cout << "狗叫声。。。" << endl;
	}
};

class lady
{
public:
	animal *a;
	lady(animal *oo) :a(oo){}
	void jiao()
	{
		a->enjoy();
	}
};

//测试代码
dog D;
animal *g = new dog();//animal *g = &D;也是可以的,dog对象不一定要在堆里
lady Lady(g);
Lady.jiao();// 输出"狗叫声。。。"