• 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;

    };

  • 相关阅读:
    JAVA,JSP,Servlet获取当前工程路径-绝对路径
    Oracle中Null与空字符串' '的区别
    使用JDBC调用存储过程
    oracle 11g SQL语句补充学习
    flutter 登录后跳转到根路由
    Mac下mongodb connect failed 连接错误解决方法
    flutter 新增安卓ios 闪图
    npm 发布包
    js中setTimeout() 时间参数为0
    ionic3 打包 混淆代码
  • 原文地址:https://www.cnblogs.com/sanerer/p/8087041.html
Copyright © 2020-2023  润新知