抽象类不能定义对象!
加上关键字virtual,仅仅有函数的声明就可以了,就成为了抽象类
#include <iostream>
#include <string>
using namespace std;
class Shape
{
public:
virtual double area() = 0;
};
class Rect : public Shape
{
int ma;
int mb;
public:
Rect(int a, int b)
{
ma = a;
mb = b;
}
double area()
{
return ma * mb;
}
};
class Circle : public Shape
{
int mr;
public:
Circle(int r)
{
mr = r;
}
double area()
{
return 3.14 * mr * mr;
}
};
//Shape是抽象类,不能定义对象,但是可以定义指针
//这个函数展现了多态!传参时p会指向抽象类的子类
//子类对象可以给父类对象初始化赋值
void area(Shape* p)
{
double r = p->area();
cout << "r = " << r << endl;
}
int main()
{
Rect rect(1, 2);
Circle circle(10);
area(&rect);
area(&circle);
return 0;
}
接口在面向对象编程中是十分重要的!