我正在学习C ++入门第5版,我遇到了一个问题。
在本书的第7.1节中,它有一些类似的代码:
Sales_data
我知道如果cin>>total
的成员都是私人成员,那么Sales_data
必定是错误的,因为cin不是cin >> total.bookNo>> total.units_sold >> total.revenue
的朋友功能。
我也知道Sales_data
是完全正确的。
但现在cin
的成员都是公开的。我可以使用total
作为整体阅读cin >> total
吗?我在C ++入门中看到了很多像{{1}}这样的代码。
答案 0 :(得分:2)
从技术上讲,像>>
这样的运算符是具有特殊调用语法的函数。您可以为类型重载operator>>
之类的函数:
istream&
operator>>(istream& in, Sales_data& v)
{
in >> v.bookNo >> v.units_sold >> v.revenue;
return in;
}
如果您想让会员成为私人,您需要让重载的运营商成为您班级的朋友:
struct Sales_data
{
friend istream& operator>>(istream& in, Sales_data& v);
private:
string bookNo;
unsigned units_sold;
double revenue;
};
答案 1 :(得分:1)
您应重新定义运算符>>如果你想改变整个结构。
尝试阅读此Link