纯虚函数的简单实现
纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本
纯虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)
- 含有纯虚函数的类,称为抽象基类,不可实列化。即不能创建对象,存在的意义就是被继承,提供族类的公共接口。
- 纯虚函数只有声明,没有实现,被“初始化”为0。
- 如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数,派生类仍然为纯虚基类。
#include <iostream>
using namespace std;
#define PI 3.1415927
class Figure
{
public:
virtual void getArea() = 0;
private:
};
class Circle :public Figure
{
public:
Circle(double r)
{
m_r = r;
}
virtual void getArea()
{
cout << "The cicle's area is: " << PI * m_r * m_r << endl;
}
private:
double m_r;
};
class Square :public Figure
{
public:
Square(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout << "The Square's area is: " << a * b << endl;
}
private:
int a;
int b;
};
class Triangle :public Figure
{
public:
Triangle(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout << "The Triangle's area is: " << a * b / 2.0 << endl;
}
private:
int a;
int b;
};
void ObjPlayer(Figure& base)
{
base.getArea();
}
int main()
{
Circle c1(4.5);
Square s1(7, 8);
Triangle t1(6, 7);
ObjPlayer(c1);
ObjPlayer(s1);
ObjPlayer(t1);
return 0;
}
The cicle's area is: 63.6173
The Square's area is: 56
The Triangle's area is: 21