所以,我正在使用 C++ Primer,第 5 版。我在第 7.1.3 节,但是由于很多人没有这本书,所以这是它的底线:作者正在为图书事务类编写代码,并希望实现一个读取和打印功能以分别获取在一本书的数据中,然后打印它。以下是本书的功能:
// input transactions contain ISBN, number of copies sold, and sales price
istream &read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
ostream &print(ostream &os, const Sales_data &item)
{
os <<item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price();
return os;
}
让我有点困惑的是为什么他们会陷入实际传递 IO 对象的麻烦中。如果我被要求自己编写这样的函数,我会这样做:
void read()
{
cout << "Please input book number, units sold and price.";
cin >> item.bookNo >> item.units_sold >> price;
}
void print()
{
cout << item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price();
}
(item.isbn() 是一个返回图书 ISBN 的函数)
当然,我不是一个经验丰富的编程者,他们是,所以额外的复杂性背后一定有一个原因,或者只是我的方式是糟糕的编程习惯。你怎么看?
(请记住,在我和本书的代码中,都假定正确使用了标题和声明/定义。)