Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是';自动常数';和';const auto';相同的?_C++_C++11_Language Lawyer_Constants_Auto - Fatal编程技术网

C++ 是';自动常数';和';const auto';相同的?

C++ 是';自动常数';和';const auto';相同的?,c++,c++11,language-lawyer,constants,auto,C++,C++11,Language Lawyer,Constants,Auto,auto-const和const-auto之间是否有语义上的区别,或者它们的意思是相同的?限定符适用于紧邻左侧的类型,除非左侧没有任何内容,否则它适用于紧邻右侧的类型。是的,是一样的。人为的例子: 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 compil

auto-const
const-auto
之间是否有语义上的区别,或者它们的意思是相同的?

限定符适用于紧邻左侧的类型,除非左侧没有任何内容,否则它适用于紧邻右侧的类型。是的,是一样的。

人为的例子:

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
std::向量测试;
常数自动a=测试[0];
*a=‘c’;
a=0;//不编译
自动常数b=测试[1];
*b=‘c’;
b=0;//不编译

a
b
都有类型
char*const
。不要认为您可以简单地“插入”类型而不是关键字
auto
(此处:
const char*a
)!
const
关键字将应用于
auto
匹配的整个类型(此处:
char*
)。

与任何其他类型一样。我可以提供更准确但符合法律的答案。既然你没有用语言律师做标记,我现在就假设你不需要那么多细节。@ArneVogel你现在有机会了:)如果什么都没有了,那么它就是对的(反之亦然):-)这不是它真正的工作原理,说明符和限定符(在声明符之前)可能以任何顺序出现,例如,
long volatile unsigned const typedef long cvull。该类型既不是(完全)左边的也不是右边的<代码> const  > @ ArnvoGel-OMG,为什么“代码> TyPufF允许在中间:)@ @ AnEnvoGEL评论,答案不完全正确。这是一个公认的答案,这一事实具有误导性(可能是危险的)。@ArneVogel我在哪里可以读到更多关于这一点的内容请注意常量并不真正适用于
char*
,它适用于
char
部分,而不是
*
部分。