[2018年5月19号]C++ primer 课后练习 第十四章 重载运算与类型转换 第十五章 面向对象程序设计

14.50

初始化正确,正确匹配当前没有二义性

14.51

dval先隐式转换到LongDouble

再调用calc(LongDouble)

14.52

ld = si+ldsi是SmallInt类型, si+ld将调用SmallInt的成员加法运算符,ld将返回一个int转换成SmallInt进行运算,在计算完成之后,将返回一个SmallInit,在将隐式转换从Int转换成Double,赋值给ld,再隐式转换成LongDouble

ld = ld + si是将调用LongDouble的成员加号运算符,并且是准确匹配,返回的LongDouble将通过默认拷贝赋值函数传递给ld

14.53

不合法,存在二义性,可以将s1转换成int和3.14进行计算,也可以将3.14转换成int来初始化一个SmallInt来使用成员加法运算符,

将其中一个修改即可


15.1

在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待,对于某些函数,基类希望它的派生类各自定义是和自身的半吧呢,此时基类就将这些函数声明成虚函数

15.2

protected:某些成员变量,基类希望它的派生类有权访问该成员,同时禁止其他用户访问

private:类私有变量,任何用户都无权访问

15.3

class Quote {
public:
    Quote() = default;
    Quote(const string& book, double sales_price):bookNo(book),price(sales_price){}
    string isbn() const{return bookNo;}
    virtual double net_price(size_t n) const {return n * price;}
    virtual ~Quote() = default;
private:
    std::string bookNo;
protected:
    double price =0.0;
};

double print_total(ostream& os, const Quote & item, size_t n){
    double ret = item.net_price(n);
    os << "ISBN: " << item.isbn() << "#sold:" << n << "total due"<<ret << endl;
    return ret;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值