C++之面向对象程序设计之抽象基类


 一、纯虚函数:

  和虚函数一样,一个纯虚函数无需定义。我们通过在函数体的位置即在声明语句的分号之前j加上 = 0就可以将一个虚函数声明为纯虚函数,其中 =0,只能出现在类内部的虚函数声明语句处

如下所示:net_price是一个纯虚函数:

1 class Disc_quote : public Quote {
2 public:
3    Disc_quote() = default;
4    double net_price(std::size_t) const = 0;
5 protected:
6   std::size_t quantity = 0;
7   double discount = 0.0;
8 
9 }

   值得注意的是:我们也可以为一个纯虚函数提供定义,不过函数体必须定义在类的外部,也就是说我们不能在类的内部为一个 =0的函数提供函数体。


 二、抽象基类:

  含有纯虚函数的类是抽象基类(未经覆盖或是直接继承),抽象基类负责定义接口,而后续的其他类可以覆盖该接口,我们不能直接创建一个抽象基类的对象,因为它内部有纯虚函数。但是我们可以定义抽象基类的派生类,前提是派生类把这些虚函数给覆盖了。

猜你喜欢

转载自www.cnblogs.com/ccpang/p/11368837.html