• 访问权限案例说明


    #include <iostream>
    #include <string>
    using namespace std;
    class Item_base 
    {
        public:
            Item_base(const string &book = "", double sales_price = 0.0):
                isbn(book), price(sales_price) {}
            string book() const 
            { 
                return isbn;
            }
            virtual double net_price(size_t n) const
            {
                return n * price;
            }
        private:
            string isbn;
        protected:
            double price;
    };
    class Bulk_item : public Item_base
    {
        public:
            Bulk_item(void) : Item_base("math", 3.4) {}; 
            double net_price(size_t) const;
            void print() { cout << "hello:" << price << endl; }
            void memfcn(const Bulk_item &d, const Item_base &b);
        private:
            size_t min_qty;
            double discount;
    };
    double Bulk_item::net_price(size_t cnt) const
    {
        if (cnt >= min_qty)
            return cnt * price * (1-discount);
        else
            return cnt * price;
    }
    void Bulk_item::memfcn(const Bulk_item &d, const Item_base &b)
    {
        double ret;
        ret = d.price;
    //  ret = b.price;   见解析3
        cout << ret << endl;
    }
    
    int main()
    {
        Item_base base("English", 1);
        Bulk_item b;
        b.memfcn(b, base);
    }

    public继承

    • 类的私有成员只能通过类的成员访问,类的对象、派生类、派生类对象都是不行的
    • 类的保护成员对于基类来说如同private一样(见上条),对于派生类来说像public一样可以通过派生类访问,但是不可以通过类的派生类对象访问
    • 派生类(不是对象)只能通过派生类对象访问基类的protected成员,而不可以通过基类的对象访问(上例中类中只能通过对象d访问price,而不可以通过b)
  • 相关阅读:
    Delphi WinAPI GetWindowRect
    Delphi WMI[2] 响应网线断开
    打印两个升序链表中共同的数据
    判断一个链表是否是回文结构
    删除有序数组中的重复项
    三数之和、最接近目标值的三数之和
    删除链表倒数第N个节点
    判断回文数
    字符串转整数
    整数反转
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3266399.html
Copyright © 2020-2023  润新知