声明一个pure virtual函数的目的是为了让derived classes只继承函数接口。
声明简朴的(非纯)impure virtual函数的目的,是让derived classes继承该函数的接口和缺省实现。
声明non-virtual函数的目的是为了令derived classes继承函数的接口及一份强制性实现。
由于non-virtual函数代表的意义是不变性(invariant)凌驾特异性(specialization),所以它绝不该在derived class中被重新定义。
pure virtual函数、simple(impure)virtual函数、non-virtual函数之间的差异,是你得到以精确指定你想要derived classes继承的东西:只继承接口,或是继承接口和一份缺省实现,或是继承接口和一份强制实现。由于这些不同类型的声明意味根本意义并不相同的事情,当你声明你的成员函数时,必须谨慎选择。如果你确实履行,应该能够避免经验不足的class设计着最常犯的两个错误。