• 访问权限案例说明


    #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)
  • 相关阅读:
    李白—烂尾楼题记
    [原创]网络图片延迟加载实现,超越jquery2010年3月26日
    利用反射,泛型,扩展方法快速获取表单值到实体类
    断点续传 到底是很么
    认识LINQ
    Gridview控件用法大总结
    网站性能优化总结。
    JQ小技巧
    自己写的jq_3个小插件
    MOSS中SPuser类的使用
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3266399.html
Copyright © 2020-2023  润新知