C ++:const引用,在types说明符之前
在以下的论点之间有什么区别?
int foo1(const Fred &arg) { ... } 和
 int foo2(Fred const &arg) { ... } 
? 我没有看到这个案例涵盖在parashift常见问题。
与const相比,与const 没有区别 ,因此它们都表示对不可变Fred实例的引用。
  Fred& const将意味着参考本身是不变的,这是多余的 ; 当处理const指针时 , Fred const*和Fred* const是有效的,但不同。 
 这是一个风格问题,但我更喜欢使用const作为后缀,因为它可以一致地应用,包括const成员函数 。 
行为
  const T&和T const& (在const T*和T const* )没有语义上的区别。 该语言将其视为同一types。 
作为一个风格问题
 关于哪个你应该更喜欢的风格,但是,我会反对很多其他的答案,并更喜欢const T& (和const T* ): 
-   const T&是Stroustrup's The C ++编程语言手册中使用的样式。
-   const T&是C ++标准自身使用的样式。
-   const T*是K&R's The C Programming Language书中使用的风格。
-   const T*是C标准中使用的样式。
-  由于上述因素,我认为const T&/const T*比T const&T const*有更多的惯性。const T&/const T*在我看来,在所有的C ++和C代码中,我经验地看起来比T const&T const*更为常见。 我认为遵循常规做法比教条式地坚持从右到左的parsing规则更可读。
-  使用T const*,将*错位为T* const似乎更容易(尤其是在人们不习惯的情况下)。 相反,const* T不是合法的语法。
那么从右到左的parsing规则呢?
 关于人们似乎喜欢使用的整个从右到左的parsing论据:正如我在另一个答案的评论中提到的那样, const T&从右到左阅读。 这是一个T常数的参考。  “T”和“常量”都可以作为形容词或名词。  (此外,读取T const*从右到左可能是不明确的,因为它可能被错误地解释为“指向T的指针常量”而不是“指向常量T的指针”)。 
 尽pipe它们是相同的,但为了保持与parsingC和C ++声明的RIGHT-LEFT规则的一致性,最好编写Fred const &arg 
也可以参考这个来获得更多关于声明,限定词和声明符的理解。
没有区别, 两者在语法和语义上都是相同的。
 两者都有效, 这里是写这个的人的解释。 
 引用他的话: 
为什么? 当我发明“const”(最初名为“readonly”,并有相应的“writeonly”)时,我允许它在该types之前或之后进行,因为我可以毫不含糊地这样做。
 引用与指针的工作方式不同:对于指针可以有“常量指针”( type * const p )和“指向常量”( const type * p或type const * p )。 
但是你没有这个引用:引用将总是指向同一个对象; 在这个意义上,你可以认为'引用'是'常量引用'(你可以有'const指针')。
 因此,像“types和常量参考”是不合法的。 你只能有'引用types'( type &ref )和'引用常量types'( const type &ref或者type const &ref ;都完全等价)。 
 最后一件事:即使const type在英语中听起来更正确,写入type const允许更加系统地理解“从右到左”的声明: int const & ref可以被读取'ref是对常量int的引用'。 或者更复杂的例子: int const * const & ref ,ref是对常量int的常量指针的引用。 
结论:在你的问题中,两者完全相同。