gpt4 book ai didi

c++ - 在C++中返回IO对象的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 15:11:09 25 4
gpt4 key购买 nike

我试图通过阅读一本教科书并做练习题和练习来教自己C++,而我目前正在学习的主题对我来说有点令人困惑,我希望得到一些澄清。我已经在网上寻找问题的明确答案,但是还没有找到任何东西。

目前,我正在标准库中学习IO类的详细信息,而我现在所在的部分将提供一些示例,这些示例具有传递和返回IO对象的函数。

例如:

istream &get_value(istream &input)
{
int value;
input >> value;

return input;
}

int main()
{
get_value(cin);
return 0;
}

我从较高的 Angular 了解这里发生了什么。 get_value函数具有对输入对象类型的引用,并且还具有对输入对象的引用,在我的示例中,我曾经使用过常用的 cin对象。我知道此函数正在从控制台中读取用户的输入,并将该输入存储为 value

我不明白的是返回输入对象的原因是什么。 为什么此函数不应具有void类型? 我正在使用的输入对象有什么用途?我知道我现在没有将其用于任何用途,但是它有什么用途?

最佳答案

返回值是这样,您可以在流运算符<<>>之间“链接”调用。运算符(operator)重载是这种“链接”的良好动机。

using namespace std;
class book {
string title;
string author;
public:
book(string t, string a) : title(t), author(a) { }
friend ostream &operator<<(ostream &os, const book &x);
}

ostream &operator<<(ostream &os, const book &x)
{
os << x.title << " by " << x.author << "\n";
return os;
}

int main()
{
book b1 { "Around the World in 80 Days", "Jules Verne" };
book b2 { "The C Programming Language", "Dennis Ritchie" };

cout << b1 << b2; // chaining of operator<<
}

如果operator <<没有返回ostream,我们将无法将修改后的ostream从第一个operator <<传递给第二个。相反,我们将不得不写
cout << b1;
cout << b2;

同样的情况也适用于使用 >>的输入操作

关于c++ - 在C++中返回IO对象的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com