gpt4 book ai didi

c++ - 了解 const 运算符

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

我正在阅读 Scott Meyers 的书并遇到以下示例:

class Rational { ... };
const Rational operator*(const Rational& lhs, const Rational& rhs);

Rational a, b, c;
...
(a * b) = c; // invoke operator= on the
// result of a*b!

他说这真的很奇怪,但我不明白为什么。在 a*b 的结果上调用 operator= 有什么问题?

最佳答案

a*b 的结果是一个临时值,它会在语句结束时消失。分配给它会很奇怪,因为分配后您将无法对其执行任何操作。

然而,它很奇怪的事实并不一定证明添加更多怪异来防止它是合理的。在现代 C++ 中,像这样返回 const 对象是个坏主意,因为它会抑制移动语义。

关于c++ - 了解 const 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30487884/

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