1.virtual将函数分为虚函数和非虚函数,其中虚函数又分为纯虚函数和非纯虚函数。
2.一个类函数一个以上的纯虚函数就是抽象类,抽象类不能使用因而不可输出,能输出的必须进行实体化。实体化的方法是在派生类中进行重新定义,将其转化为虚函数(不是纯虚函数)。纯虚函数没有实际意义,只是作为一个接口,或者提醒。
3.我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。
#include<iostream>
#include<cmath>
#define pi 3.1415926
using namespace std;
class Shape
{
public:
virtual float printArea()=0;
};
class Circle:public Shape
{
public:
Circle();
Circle(float );
virtual float printArea();
friend ostream& operator<<(ostream& ,Circle &);
protected:
float radius;
};
float Circle::printArea()
{
return pi*radius*radius;
}
ostream& operator<<(ostream &out,Circle &c)
{
out<<"Circle="<<c.printArea();
return out;
}
Circle::Circle()
{
radius=0;
}
Circle::Circle(float r)
{
radius=r;
}