액세스 권한 사례 설명

5293 단어 액세스 권한
#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처럼 파생 클래스를 통해 접근할 수 있지만 클래스의 파생 클래스 대상을 통해 접근할 수 없다
  • 파생 클래스(대상이 아님)는 파생 클래스 대상을 통해 기본 클래스의 보호된 구성원만 접근할 수 있고 기본 클래스의 대상을 통해 접근할 수 없다(상기 클래스에서 대상 d만 price에 접근할 수 있고 b를 통해 접근할 수 없다)
  • 좋은 웹페이지 즐겨찾기