auto const
和const auto
有语义上的区别吗?还是它们的意思相同?
auto const
和const auto
有语义上的区别吗?还是它们的意思相同?
const
限定符作用于其左侧的类型,除非左侧没有任何内容,此时它将作用于其右侧的类型。所以是的,它们是一样的。
long volatile unsigned const typedef long cvull;
。类型既不是完全在 const
左侧,也不是完全在右侧。 - Arne Vogeltypedef
:) - 4LegsDrivenCatauto
可以由多个部分组成,例如int *
。将auto
视为一个大块并加上括号会有所帮助,比如(int *)
,而不仅仅是int *
。 - undefined刻意的例子:
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
变量 a
和 b
的类型都是 char* const
。不要认为可以简单地用类型名代替关键字 auto
(这里是 const char* a
)!const
关键字将应用于 auto
匹配的整个类型(这里是 char*
)。
char*
,它适用于char
部分,而不是*
部分。 - jbrunichar
并不是const
,这就是为什么你可以替换它。指针本身是const
(例如,“*”部分),这就是为什么你无法替换它。 - undefined