pure virtual、impure virtual、non-virtual函数的接口继承和实现继承

时间:2023-03-09 05:57:45
pure virtual、impure virtual、non-virtual函数的接口继承和实现继承

1。abstract class

拥有pure virtual函数的class是abstract class. 不能创建abstract class的实体。

2.pure virtual 函数

他们必须被任何“继承了它们”的具象class重新声明,而且它们在抽象class中通常没有定义。(所有的derived class必须重新声明base class的pure virtual函数)

声明一个pure virtual函数的目的是为了让derived classes只继承函数接口。

3.impure virtual函数

声明一个impure virtual函数的目的是为了让derived classes继承函数接口和缺省实现。(derived class支持某个函数,可以自己写,也可以使用base class的缺省版本,但是不能同时自己指定函数声明和缺省版本)

4.non-virtual函数

non-virtual函数意味着它不打算在derived class中有不同的行为。(non-virtual函数绝对不应该在derived class中被重新定义)

声明一个non-virtual函数的目的是为了让derived class继承函数的接口以及一份强制性实现。

基类成员函数 接口继承和实现继承
pure virtual   只具体指定接口继承
impure virtual 具*定接口继承和缺省实现继承
non-virtual   具*定接口继承和强制性实现继承