Gibt es einen semantischen Unterschied zwischen auto const
und const auto
oder bedeuten sie dasselbe?
Gibt es einen semantischen Unterschied zwischen auto const
und const auto
oder bedeuten sie dasselbe?
Antworten:
Das const
Qualifikationsmerkmal gilt für den Typ unmittelbar links, es sei denn, links befindet sich nichts. Dann gilt es für den Typ unmittelbar rechts. Also ja, es ist das gleiche.
long volatile unsigned const typedef long cvull;
. Der Typ ist weder (vollständig) links noch rechts von const
.
typedef
ist in der Mitte erlaubt :)
Erfundenes Beispiel:
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
Beide a
und b
haben Typ char* const
. Denken Sie nicht, dass Sie den Typ einfach anstelle des Schlüsselworts "einfügen" können auto
(hier :) const char* a
! Das const
Schlüsselwort gilt für den gesamten auto
übereinstimmenden Typ (hier :) char*
.
char*
, sie gilt für das char
Teil, nicht für das *
Teil.