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;

    };

  • 相关阅读:
    Python class static methods
    学习MySQL出现问题Not allowed to return a result set from a t
    MySQL创样例表(MySQL必知必会B.2)
    无重复字符的最长字串(C++,python实现)
    softmax详解
    为什么要使用logistic函数
    两个栈实现队列的插入和删除(C++实现)
    用数组实现队列(C++)
    C++ memset函数
    两数之和(C++实现)
  • 原文地址:https://www.cnblogs.com/sanerer/p/8087041.html
Copyright © 2011-2022 走看看