istream& operator>>(istream& in, Sales_item& s)
{
double price;
in >> s.isbn >> s.units_sold >> price;
// check that the inputs succeeded
if (in)
s.revenue = s.units_sold * price;
else
s = Sales_item(); // input failed: reset object to default state
return in;
}
When designing an input operator, it is important to decide what to do about error-recovery, if anything.
因为一旦你重载输入操作符的时候,给类的数据成员赋值的话,那么有可能3个数据成员只赋值成功了两个,那么这个时候,这个对象就处在一个错误的状态,所以关于输入的错误,应该注意处理。输入的数据是不是我们想要的格式,这个也是需要检查的。