gpt4 book ai didi

c++ - 调用时不取赋值运算符的返回类型会怎样?

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:40 24 4
gpt4 key购买 nike

我正在研究 = 的运算符重载并看到了下面的示例。

class Ratio {
public:
Ratio(int , int );
Ratio(const Ratio&);
Ratio& operator= (const Ratio&);
private:
int nNum, nDenum;
};

Ratio::Ratio(int n = 0, int d = 1) {
nNum = n;
nDenum = d;
}

Ratio::Ratio(const Ratio &T) {
nNum = T.nNum;
nDenum = T.nDenum;
}

Ratio& Ratio::operator= (const Ratio& R) {
nNum = R.nNum;
nDenum = R.nDenum;
return *this;
}

int main() {
Ratio r1;
Ratio r2(2,3);
r1 = r2;//STATEMENT 1
}

此代码运行良好,但我想知道为什么?由于函数 operator= 正在返回对 Ratio 对象的引用,但在语句 1 中我们没有在任何 Ratio 对象中获取返回引用。

最佳答案

没有任何反应。 operator= 返回一个引用只是为了将它们链接在一起的用法。如:

r1 = r2 = r3;

并且赋值是右结合的,所以上面的赋值链是这样解析的:

r1 = (r2 = r3);

无论如何,这只是一个约定,但所有内置类型以及标准库中的所有类型都遵循此约定。

关于c++ - 调用时不取赋值运算符的返回类型会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156837/

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