关于所有公共成员的对象的cin函数

时间:2015-05-17 07:46:36

标签: c++

我正在学习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}}这样的代码。

2 个答案:

答案 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