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;

    };

  • 相关阅读:
    jquery获取父元素或父节点的方法
    JS省份联级下拉框
    全国各省、市名称(包括县级市)
    让Vs2010支持 Css3+HTML5
    Sql Server 事务/回滚
    Windows.Forms Panel 动态加载用户控件 UserControl
    C/C++ 运算符 & | 运算
    WPF
    SQL Server 数据库定时自动备份【转】
    如何编写更棒的代码:11个核心要点
  • 原文地址:https://www.cnblogs.com/sanerer/p/8087041.html
Copyright © 2011-2022 走看看