gpt4 book ai didi

C++ 重载输出运算符

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:19 24 4
gpt4 key购买 nike

所以我正在编写我的 C++ 家庭作业,最后一部分他希望我们用重载的输出/插入运算符替换格式化输出方法 (toString)。说实话,我 100% 不知道他这话是什么意思。我搜索了一下,找到了使用重载插入运算符的示例代码,但似乎无法找到如何将其合并到我的代码中。尽管我认为我可能找错了地方。我的toString如下:

string Movie::toString() const {
ostringstream oS;
oS << "\n\n====================== Movie Information\n"
<< "\n Movie Title:\t" << title << " (" << releaseYear << ")"
<< "\n US Rank & Box Office:\t" << usRank << "\t$" << usBoxOffice
<< "\nNon-US Rank & Box Office:\t" << nonUSRank << "\t$" << nonUSBoxOffice
<< "\n World Rank & Box Office:\t" << worldRank << "\t$" << worldBoxOffice
<< "\n";
return oS.str();
}

就像我提到的,我不确定“重载”是什么意思,所以如果出于某种原因,这不足以让您直接帮助我解决问题,那么您能否简要描述一下他可能会遇到的问题意思是用重载的输出运算符替换当前输出。谢谢你

编辑:这是我的下一个问题。 https://stackoverflow.com/questions/14924621/c-overloaded-output-operator-cont

最佳答案

重载一个函数意味着提供其他具有相同名称但不同参数类型的函数。运算符也可以重载。许多运算符都有一个可以重载的相应函数,称为 operator?? , 其中??是运营商本身。例如,如果您有两个对象 xy类类型T ,你可以重载 operator+ .重载运算符允许您为使用该运算符和类型赋予一些意义。所以现在你可以做 x + y .

流插入运算符是<< .这就是你在做的时候使用的std::cin << "hello"; - 它插入到流中。这个运算符也可以重载,就像+一样。上面重载了。您需要重载的函数称为 operator<< .

有两种方法可以重载像 << 这样的二元运算符(二进制,因为它需要两个操作数,一个在左侧,一个在右侧,left << right)。一种是让它成为left类型的成员并给它一个 right 类型的参数.另一种是使其成为具有两个参数的非成员函数,一个类型为left。另一个是 right 的类型.由于您的类型 left将是 std::ostream ,您不能修改该类(因为它是由标准提供的),因此您必须选择选项二。

所以你的免费功能需要看起来像这样:

std::ostream& operator<<(std::ostream& os, const Movie& movie) {
// Insert everything you want into `os`
return os;
}

现在这个函数会在你做<<的时候被调用用std::ostream在左边和一个Movie在右边。

关于C++ 重载输出运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923987/

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