//shape.cpp
//忽略其他函数
class shape{
private:
public:
virtual double area()=0;
}
class rectangle:public shape{
public:
virtual double area(){
return 1;
}
}
class rectangle:public shape{
private:
double x;
double y;
public:
virtual double area(){
return x*y;
}
}
class rectangle:public shape{
private:
double r;
public:
virtual double area(){
return 3.14*r*r;
}
}
如果定义
rectangle rect(3,4);
shape *s;
并执行
s->area()
通过基类指针找到虚函数,会看一下在派生类中有没有定义。
甚至可以定义一个指向基类的指针数组,每个元素指向基类或者派生类对象
shape *s[3]={&s,&rect,&c}
for (int i=0;i<3;i++){
cout<<sp[i]->area();
}