gpt4 book ai didi

c++ - const float & x = something;//被认为是有害的?

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

有一些代码是这样的:

// Convenience to make things more legible in the following code
const float & x = some.buried.variable.elsewhere;

// Go on to use x in calculations...

有人告诉我“const float &”是“坏的”,应该只是一个普通的 float 或 const float。

但是,除了“您不必键入‘&’”之外,我想不出一个令人信服的理由。

事实上,在我看来,在某些情况下,原始版本可能会更好,因为编译器可能不会为变量分配额外的堆栈空间。

换句话说,本来我可以有效地说:

assert(&x == &some.buried.variable.elsewhere)

而在第二种情况下我不能。

此外,在我看来,原始版本似乎能更好地传达意图,因为引用的全部意义在于为另一个值创建别名。

谁能给我一些例子,说明“const float &”版本在哪些方面比普通的“float”或“const float”更明显?

最佳答案

我想不出为什么 const float & 会比 const float 更好。

如果您担心复制(这与 float 这样的原始类型无关)或者您希望能够在所有共享引用(与 const 成员无关)。

最重要的是,在初始化时,成员中的引用是一个巨大的痛苦*,因此它们必须提供替代方案的显着优势才能有用,而这显然不是使用 const float 的情况。


* FQA on references总是有趣和发人深省

关于c++ - const float & x = something;//被认为是有害的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738952/

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