gpt4 book ai didi

c++ - 左操作数是什么意思?

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:40 27 4
gpt4 key购买 nike

我想弄清楚为什么这段代码有效(特别是“价格”部分)

struct CarType
{
string maker;
int year;
float price;
bool operator > (carType car)
{
if (price > car.price)
return true;
else return false;
}
};

它说“我们不需要 myCar.price,因为 myCar 是左操作数”。这意味着什么?我在另一个 .h 文件中写了这个:

bool operator > (Fraction a, Fraction b)
{
if (a.numerator*b.denominator > b.numerator*a.denominator) return true;
else return false;
}

看看我是如何传递 2 个 Fraction 结构的?我不确定为什么“myCar”只需要传递一个 CarType 数据结构或解释的含义。有人可以启发我吗?谢谢!

最佳答案

如果您将 operator> 编写为一个自由函数(不是该类的成员),那么您需要两个操作数。

如果你把它写成一个成员函数,那么你仍然有两个操作数,但其中一个是隐藏的this操作数。 (请记住,当您调用非静态成员函数时,您是在类的特定实例上调用它。)

如果我放入隐式 this->

可能会帮助您理解
bool operator > (carType car)
{
if (this->price > car.price)
return true;
else return false;
}

这也意味着您可以根据需要比较汽车:

CarType one, two;
if (one.operator>(two)) // same as if (one > two)
{
// some code...
}

关于c++ - 左操作数是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232849/

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