zoukankan      html  css  js  c++  java
  • protected 成员与派生类

    受保护的成员对于类的用户来说时不可访问的

    受保护的成员对于派生类的成员和友元来说是可访问的

        其中,只能通过派生类对象来访问基类的受保护成员,派生类对于一个基类对象中的受保护成员没有任何访问特权

    eg:

    class Quote

    {

    public:

    Quote() = default;

    Quote(const string &book, double sale_price) :bookno(book), price(sale_price) {}

    string isbn() const { return bookno; }

    virtual double net_price(size_t n) const { return n * price; }

    virtual void debug();

    // 根节点的类通常都会定义一个虚析构函数。

    virtual ~Quote() = default;

    private:

    string bookno;

    protected:

    double price = 0.0;

    };

    class Disc_quote : public Quote

    {

    public:

    Disc_quote() = default;

    Disc_quote(const string &book, double pri, size_t n, double disc) : Quote(book, pri), quantity(n), discount(disc) {}

    // 声明一个纯虚函数

    double net_price(size_t) const = 0;

    double f(Disc_quote &q) { return q.price;  }    // 正确访问

    // double f() {return price;}                                  正确的访问

    // double f(Quote &q) {return q.price}                 不能通过基类对象来访问基类的受保护成员,错误的使用方法!!!

    protected:

    size_t quantity = 0;

    double discount = 0.0;

    };

  • 相关阅读:
    线程池问题
    高级I/O
    闹钟设计
    线程竞争问题
    线程基本函数
    SpringMvc支持跨域访问
    gitlab qq邮件配置
    gitlab断电
    docker run always
    电子书网
  • 原文地址:https://www.cnblogs.com/sanerer/p/8087041.html
Copyright © 2011-2022 走看看