抽象基类、访问控制与继承和继承中的类作用域
抽象基类 一个基类是抽象基类,它的虚函数必须是一个 纯虚函数 。纯虚函数是虚函数后加 =0 来定义的, =0 只能出现在虚函数的类内声明之后 : class Disc_quote : public Quote { public: Disc_quote() = default; Disc_quote(const std::string& book, doule price, size_t qty, double disc) : Quote(book, price), quantity(qty), discount(disc) {} // 纯虚函数 double net_price(size_t) const = 0; protected: size_t quantity = 0; double discount = 0.0; }; 抽象基类的定义:含有或者继承了纯虚函数(未覆盖)的类是一个抽象基类。 1. 抽象基类只负责定义接口; 2. 不能定义抽象基类的对象; 3. 一般来说,为纯虚函数提供定义是没有意义的, 毕竟在派生类中可能要覆盖该虚函数。也可以为这个纯虚函数提供定义,不过定义不能出现在类内; 4. 抽象基类的派生类必须将纯虚函数override, 否则该派生类也是一个抽象基类。 访问控制与继承 受保护的成员的访问控制