14.2.2节练习

istream &operator>>(istream &is, Sales_data &item)
{
    double price;//不需要初始,因为我们将先读入数据到price,之后才使用它
    is >> item.bookNo >> item.units_sold >> price;
    if(is)        //检测输入是否成功
        item.revenue = item.units_sold * price;
    else
        item = Sales_data();//输入失败;对象被赋予默认的状态
    return is;
}

上面的代码,检查了输入操作是否成功,输入操作在面临下面的情况时可能失败:1.当定义的数据类型装不下定义的数据类型时,比如

练习14.9:为你的Sales_data类定义运算符。

istream &operator>>(std::istream& is, Sales_data& item){
	double price = 0;
	is >> item.bookNo >> item.units_sold >> price;
	if (is)
		item.revenue = price * item.units_sold;
	else
		item = Sales_data();
	return is;
}

练习14.10:对于Sales_data的输入运算符来说如果给定下面的输入将会发生什么情况?

(a) 0-202-99999-9  10  24.95                                         (b)10  24.95   0-21-99999-9

答:(a)与定义数据类型匹配不会出现问题    (b)与数据类型不匹配会进入else

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值