Gibt es einen semantischen Unterschied zwischen auto constund const autooder bedeuten sie dasselbe?
Gibt es einen semantischen Unterschied zwischen auto constund const autooder bedeuten sie dasselbe?
Antworten:
Das constQualifikationsmerkmal 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.
typedefist 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 aund bhaben 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 constSchlüsselwort gilt für den gesamten autoübereinstimmenden Typ (hier :) char*.
char*, sie gilt für das charTeil, nicht für das *Teil.