c++ 转换与继承



#include <iostream>
#include <string>
using namespace std;
using std::string;  

class Item_base {

public:
    Item_base(const std::string &book = "", 
              double sales_price = 0.0):
                     isbn(book), price(sales_price) { }

    std::string book() const { return isbn; }

    
    virtual double net_price(std::size_t n) const 
               { return n * price; }

    virtual ~Item_base() { } 
private:
    std::string isbn;   
protected:
    double price;       

};

class Bulk_item : public Item_base {

public:
       double net_price(std::size_t) const;
       void memfcn(const Bulk_item &d, const Item_base &b);
private: 
	std::size_t min_qty;
        double discount;

};


 double Bulk_item::net_price(size_t cnt) const
{
	if(cnt >= min_qty)
              return cnt * (1 - discount) * price;
        else
              return cnt * price;
}

void Bulk_item::memfcn(const Bulk_item &d, const Item_base &b)
{
	double ret = price;
        ret = d.price;
       
}

int main()
{

Bulk_item bulk;
Item_base item(bulk);  //ok
item = bulk; //ok

Item_base base;
Bulk_item *bulkP = &base;  //error
Bulk_item &buklRef = base;  //error
Bulk_item bulk = base;     //error

Item_base *itemP = &bulk;  // ok
Bulk_item *bulkP = itemP;  //error

}





 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值