慕慕森
行为const T&和之间没有语义差异T const&;语言将它们视为相同类型。(同样的道理也适用于const T*和T const*。)作为风格问题但是,关于在造型上您更喜欢哪个,我将拒绝其他许多答案,并且更喜欢const T&(和const T*):const T&是Stroustrup的《 C ++编程语言》一书中使用的样式。const T& 是C ++标准本身使用的样式。const T*是K&R的《 C编程语言》一书中使用的样式。const T* 是C标准中使用的样式。由于上述因素,我认为const T&/ const T*具有比T const&/ 更多的惯性T const*。const T&/从const T*经验上看,对我来说比T const&/ T const*在我所见过的所有C ++和C代码中更常见。我认为遵循常规做法比从原则上遵循从右到左的解析规则更具可读性。使用T const*,将*as 放错地方似乎更容易T* const(尤其是如果人们不习惯它)。相反,const* T不是合法的语法。从右到左的解析规则呢?关于人们似乎喜欢使用的从右到左的整个解析论点:正如我在另一个答案的评论中提到的,const T&从右到左也不错。它是对T常数的引用。“ T”和“ constant”都可以用作形容词或名词。(此外,读取T const*从右到左可以是不明确的,因为它可能被错误地解释为“指针常数到 T”,而不是称为“指针以恒定T”)。