const float&x = something; //认为有害吗?

jw.*_*jw. 4 c++ reference

有一些像这样的代码:

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

// Go on to use x in calculations...
Run Code Online (Sandbox Code Playgroud)

我被告知"const float&"是"坏",应该只是一个普通的浮点数或常量浮点数.

然而,除了"你不必输入'和'"之外,我无法想到一个令人信服的理由.

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

换句话说,最初我可以有效地说:

assert(&x == &some.buried.variable.elsewhere)
Run Code Online (Sandbox Code Playgroud)

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

此外,在我看来,原始似乎更好地传达意图,因为引用的整个要点是为另一个值创建别名.

任何人都可以举例说明"const float&"版本在某种有形方面比普通的"浮动"或"常量浮动"更糟糕吗?

Ass*_*vie 5

我想不出为什么const float &会比这更好的原因const float.

如果您担心正在制作副本(与原始类型无关float),或者您希望能够在共享引用的所有实例(与const成员无关)中更新值,则引用是有意义的.

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


*关于参考文献FQA总是很有趣,也很有启发性