gpt4 book ai didi

c++ - 重载 += 运算符作为友元函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:06 25 4
gpt4 key购买 nike

我读到将运算符实现为友元函数会更好。当我已经有 + 运算符函数时,如何重载 += 运算符作为友元函数:

friend Dollar operator+(const Dollar &p1, const Dollar &p2);
friend Dollar &operator+=(const Dollar &p1, const Dollar &p2);

这是错误的,因为我需要返回对变量的引用。

Dollar &operator+=(const Dollar &p1, const Dollar &p2)
{
return p1+p2;
}

最佳答案

将运算符重载为友元函数更好,以便允许转换应用于表达式的左侧和右侧。例如,stringoperator+ 是一个 friend ,所以我可以写 "Hello "+ string("World") 而不仅仅是被能够编写 string("Hello ") + "World"

但是,此推理不适用于诸如 operator+= 之类的修改器。您必须采用非常量左参数,这排除了在临时对象上使用此运算符的可能性。出于这个原因,建议将非变异运算符实现为 friend(或其他自由)函数,并将修改器实现为成员函数。 (实际上,operator=只能作为成员函数重载。)

关于c++ - 重载 += 运算符作为友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16866193/

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