#include<iostream>
using namespace std;
class Shape{/*有纯虚函数的类叫做抽象类,它指定公共接口,功能由派生类来实现*/
public:
virtual void shapeName()const = 0;/*是否所有派生类都对此纯虚函数进行了重写,否则会怎么样?*/
};
point.h:
#include"shape.h"
class Point :public Shape{
public:
virtual void shapeName()const { cout << "point:"; }
};
circle.h:
#include"point.h"
class Circle :public Point{
public:
virtual void shapeName()const{ cout << "circle:"; }
};
cylinder.h:
#include"circle.h"
class Cylinder :public Circle{
public:
virtual void shapeName()const { cout << "cylinder:"; }
};
run.cpp:
#include"cylinder.h"
void showName(const Shap&s){/*shapName是一个公共接口,所以能够输出各个派生类的name*/
cout<<"name\t";
s.shapeName();
cout<<endl;
}
int main(){
Point point;
Circle circle;
Cylinder cylinder;
show(point);
show(circle);
show(cylinder);
return 0;
}