const参考参数

73 c++

以下声明之间有区别吗?

void somefunc(const Person &p);
void somefunc(Person const &p);
Run Code Online (Sandbox Code Playgroud)

Eva*_*ran 91

没有什么区别.const绑定到其左侧的类型...除非它是声明的第一部分,在这种情况下它绑定到右侧.

请参阅:https://isocpp.org/wiki/faq/const-correctness#const-ref-alt

就个人而言,我发现const T &x阅读效果更好.根据,Bjarne的也喜欢放const第一.特别是因为关键字最初将被调用readonly并且readonly int x读取更好:-P.

  • 当处理间接时,肯定第二个是*更一致*.例如:int const*const x; (一切都绑定了) (6认同)

Ara*_*raK 47

就在这里!第一个更可读:)

  • 没有!第二!(真的 - 你必须从右到左阅读定义:Person const*volatile*p; // p是指向Person的cont指针的易失性pinter.) (2认同)

abe*_*nky 11

请参阅http://www.parashift.com/c++-faq-lite/const-correctness.html

(请参阅新链接:https://isocpp.org/wiki/faq/const-correctness#const-ref-alt)

具体为18.6至18.8.

[18.6]"const Fred&x"是什么意思?

它表示x对Fred对象建立别名,但x不能用于更改Fred对象.

[18.7]"Fred&const x"是否有意义?

不,这是胡说八道.

[18.8]"Fred const&x"是什么意思?

Fred const&x在功能上等同于const Fred&x.但是,真正的问题是应该使用哪个.

阅读本文的其余部分以获取更多信息.但实质上,它说它们是等价的,你可以根据自己的需要使用其中任何一个.但是,你应该选择一个并坚持下去,以避免将来混淆.

  • 我会在编写新代码时添加,选择一个并坚持使用它,但在修改现有代码时,请坚持使用现有代码的方式. (4认同)