练习15.1
什么是虚成员?
::需要派生类自己定义的成员
练习15.2
protected访问说明符与private有何区别?
::protected允许派生类访问,private一律不允许访问
练习15.3
定义你自己的Quote类和print_total函数
class Quote{ public: Quote(const std::string& book,double sales_price):bookNo(book),price(sales_price){ } std::string isbn()const {return bookNo; } virtual double net_price(std::size_t n)const { return price*n; } virtual ~Quote()=default; private: std::string bookNo; protected: double price =0.0; }; #include <iostream> double print_total(std::ostream &os,const Quote& item,std::size_t n) { double ret=item.net_price(n); os<<" ISBN: "<<item.isbn() <<" # sold: "<<n<<" total due: "<<ret<<std::endl; }
练习15.4
下面那条声明语句是不正确的?请解释原因
(C)不正确,声明不包含它的派生列表
练习15.5
定义你自己的Bulk_quote类
class Bulk_quote:public Quote{ public: Bulk_quote()=default; Bulk_quote(const std::string& book,double p,std::size_t qty,double disc) :Quote(book,p),min_qty(qty),discount(disc){ } double net_price (std::size_t cnt)const override{ if(cnt >=min_qty) return cnt * (1-discount) * price; else return cnt * price ; } private: std::size_t min_qty=0; double discount=0.0; };
练习15.6
将Quote和Bulk_quote的对象传给print_total函数,检查函数是否正确
int main() { Bulk_quote a("1234",1,2,0.1); print_total(std::cout,a,10); }
练习15.7
定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出部分原价销售
double net_price (std::size_t cnt)const override{ if((cnt-qty)>0) return cnt * (1-discount) * price+(cnt-qty)*price; else return cnt * (1-discount) * price; }
练习15.8
给出静态类型和动态类型的定义
::静态类型就是编译时的类型,动态类型是运行时实际的类型
练习15.9
在什么情况下表达式的静态类型可能与动态类型不同?请给出三个静态类型与动态类型不同的例子
::func(Quote&,int);派生类可以转换成基类引用
练习15.10
解释第284页中将ifstream传递给Sales_data的read函数是如何工作的
::传递给了一个输入流类的派生类
练习15.11
为你的Quote添加debug虚函数,令其分别显示两个类的数据成员
virtual void debug(){ std::cout<<"bookNo: "<<bookNo<<" price: "<<price<<std::endl; }
练习15.12
有必要将一个成员函数同时声明成override和final吗?为什么?
::看需求吧,一个类可以同时是派生类和基类
练习15.13
给定下面的类,解释每个print的机理
::derived的print函数无限调用自己了,可以base::print(os),显示使用基类函数
练习15.14
给定上一题的类以及下面这些对象,说明在运行时调用哪个函数
(a)基类print()
(b)派生类print()和基类print()
(c)基类name()
(d)基类name()
(e)基类name()
(f)派生类print和基类print()
标签:std,15.1,14,double,price,练习,Quote,print,primer From: https://www.cnblogs.com/yddl/p/16599791.html