首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >常量引用参数

常量引用参数
EN

Stack Overflow用户
提问于 2009-06-23 23:31:40
回答 3查看 43.7K关注 0票数 73

以下声明之间有区别吗?

代码语言:javascript
复制
void somefunc(const Person &p);
void somefunc(Person const &p);
EN

回答 3

Stack Overflow用户

发布于 2009-06-23 23:37:27

是的,有!第一个更具可读性:)

票数 47
EN

Stack Overflow用户

发布于 2009-06-24 09:06:18

这真的是一个品味问题。

如果从右向左阅读,"Person const & x“读作"x是对常量人的引用”。

这听起来比"const Person & x“更好,后者应该是"x是对一个人的引用,这是常量。”

所以,如果你熟悉变量声明从右到左的阅读方向,你可能会更喜欢第一种。

票数 4
EN

Stack Overflow用户

发布于 2013-09-01 12:59:04

两者都是一样的。

const Person &x是目前最流行的,因为英语把形容词放在名词之前,这使它“更像英语”。

另一种形式,Person const & x,被认为是一种不太习惯的形式。他们的论点是,表单总是可以从右到左解析,"x是对const Person的引用。“争论是,分析的清晰性比惯用结构更重要。

不幸的是,对于这些人来说,他们的表单并不能处理所有的事情。一旦您开始看到数组、函数指针和其他奇特的形式,规则就开始崩溃。char *str10不能以从右到左的形式写入,因为数组必须位于右侧。void (*signal(int,void (*fp)(Int)(Int))(Int)会让从右到左的人痛苦地退缩。

唯一能解释所有类型的规则,即顺时针螺旋规则:http://c-faq.com/decl/spiral.anderson.html

通常,一旦有人看到顺时针方向的螺旋,所有关于清晰解析规则的希望都会破灭。大多数人认为const Person& x可能是最好的选择!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1035795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档