1:声明一个pure virtual函数的目的是为了让derived classes只继承函数接口。
2:声明简朴的(非纯)impure virtual函数的目的,是让derived classes继承该函数的接口和缺省实现。
3:声明non-virtual函数的目的是为了令derived classes继承函数的接口及一份强制性实现。
class Shape {
public:
virtual void draw() const = 0;//纯虚函数
virtual void error(const std::string& msg);//虚函数
int objectID() const;//普通函数
...
};
class Rectangle: public Shape { ... };
class Ellipse: public Shape { ... };
pure virtual函数有两个最突出的特性:他们必须被derived class重新声明,而且他们在抽象class(带有纯虚函数的class)通常没有定义。
impure virtual 函数,derived class继承其函数接口,但impure virtual 函数会提供一份实现代码,derived class函数可能会覆写它!