'auto const'和'const auto'是否相同?


Answers:


107

const限定符所适用类型眼前的左侧,除非有什么向左然后将其应用于类型眼前的权利。是的,是一样的。


3
如果什么都没有,那就是正确的(反之亦然):-)
Seshadri R

8
这并不是真正的工作方式,说明符和限定符(在声明符之前)可以按任何顺序出现,例如long volatile unsigned const typedef long cvull;。该类型既不在(完全)在的左侧,也不在其右侧const
Arne Vogel '18

1
@ArneVogel OMG,为什么typedef允许在中间:)
4LegsDrivenCat

正如@ArneVogel所说,答案并不完全正确。这是公认的答案,这一事实具有误导性(并且可能是危险的)。
WNY

23

人为的例子:

std::vector<char*> test;
const auto a = test[0];
*a = 'c';
a = 0; // does not compile
auto const b = test[1];
*b = 'c';
b = 0; // does not compile

两者ab都有类型char* const。不要以为您可以简单地“插入”类型而不是关键字auto(在这里:)const char* a!该const关键字将适用于整个类型auto匹配(此处char*)。


const并不真正适用于char*,它适用于char零件,而不是*零件。
jbruni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.