多态简单公有派生的基本编写:
下面的代码写了两种方法,一种是在主函数中通过引用的方式调用,
另外一种就是通过指针的方式调用;
这里把基类的成员函数定义为纯虚函数,可以通过基类指针,调用派生类的同名函数,注意,一定要声明为virtual ,这样才可以实现动态编联的效果,这就是多态.
#include <iostream>
using namespace std;
class Mammal{
public:
virtual void speak()=0;//这里注意一下尽量不用const,因为会出错,具体原因,以后再考虑!!!!
};
class Cat:public Mammal{
public:
void speak()
{
cout<<"喵喵喵!!"<<endl;
}
};
class Dog:public Mammal{
public:
void speak()
{
cout<<"汪汪汪!!!"<<endl;
}
};
/* int main()//方法一:
{
Mammal *m; //注意,这是一个抽象类,所以不能创建对象,但可以创建!!!指针对象!!!!
Cat c;
m=&c;
m->speak();
Dog g;
m=&g;
m->speak();
return 0;
}*/
/* void tostring(Mammal &m)
{
m.speak();
}
int main()
{
Cat c;
tostring(c);
Dog g;
tostring(g);
return 0;
}*/