const
не меняет то, где хранятся вещи, это ключевое слово, чтобы сказать компилятору, чтобы переменные или функции не изменяли вещи.Пример:
std::string myNormalStr("Hello");
const std::string myConstStr("Don't Change Me");
myNormalStr = myConstStr; // this is ok
myConstStr = myNormalStr; // this will give you a compile error
Это очень упрощенный пример, но то же самое относится и к const
объектам, которые передаются в функции, возвращаются из функций или если сама функция const
.
Вот отличная статья Херба Саттера о всех правильных способах использования ключевого слова const
.
Редактировать:
В настоящее время практически нет причин использоватьключевое слово auto
, поскольку все неявно автоматически в пределах его видимости.Это ключевое слово является спецификатором класса хранения для автоматической переменной.
Однако ключевое слово auto
изменяется как часть нового стандарта C ++, находящегося в стадии разработки, но уже поддерживается Visual Studio 2010 и некоторыми другими компиляторами в его новомвеликолепная форма.Его можно использовать как в C ++ 0x:
std::vector<int> numbers;
for (std::vector<int>::const_iterator itr(numbers.begin());
itr != numbers.end(); ++itr)
{
// do something with each iterated element
}
// compiler auto deduces from rvalue
// and determines that you want a
// std::vector<int>::const_iterator type
for (auto itr = numbers.cbegin();
itr != numbers.cend(); ++itr)
{
// do something with each iterated element
}