auto 和 auto& 和 const
auto and auto& and const
auto x1 = exp1;
auto& x2 = exp2;
我是否理解正确,用 auto
(x1) 声明的变量永远不会是 const
,即使 exp1
是 const
(例如,一个函数returns const
)。如果 exp2 为常量,则 auto&
(x2) 将为常量。即使 auto 是一个指针。
auto it = find(cont.cbegin(), cont.cend(), value);
这里尽管我使用了 cbegin 和 cend 它将是非常量迭代器,并且要成为 const_iterator 我应该写
const auto it1 = find(cont.cbegin(), cont.cend(), value);
Do I understand correctly that variables declared with auto (x1) will never be const
正确。
When with auto&(x2) will be const if exp2 will be const.
引用永远不会是常量;参考文献不能是 cv 限定的。 x2
可以是对 到 const.
的引用
auto it = find(cont.cbegin(), cont.cend(), value);
Here despite I use cbegin and cend it will be non-const iterator
it
将是 const_iterator 类型的非常量限定对象。
const auto it1 = find(cont.cbegin(), cont.cend(), value);
it1
将是 const_iterator 类型的 const 限定对象。
通过 const_iterator(通常)间接为您提供对 const 的引用,因此您无法修改指向的对象。
const 对象不能(通常)被修改。因此,例如,您不能递增 const 限定的迭代器。
auto x1 = exp1;
auto& x2 = exp2;
我是否理解正确,用 auto
(x1) 声明的变量永远不会是 const
,即使 exp1
是 const
(例如,一个函数returns const
)。如果 exp2 为常量,则 auto&
(x2) 将为常量。即使 auto 是一个指针。
auto it = find(cont.cbegin(), cont.cend(), value);
这里尽管我使用了 cbegin 和 cend 它将是非常量迭代器,并且要成为 const_iterator 我应该写
const auto it1 = find(cont.cbegin(), cont.cend(), value);
Do I understand correctly that variables declared with auto (x1) will never be const
正确。
When with auto&(x2) will be const if exp2 will be const.
引用永远不会是常量;参考文献不能是 cv 限定的。 x2
可以是对 到 const.
auto it = find(cont.cbegin(), cont.cend(), value);
Here despite I use cbegin and cend it will be non-const iterator
it
将是 const_iterator 类型的非常量限定对象。
const auto it1 = find(cont.cbegin(), cont.cend(), value);
it1
将是 const_iterator 类型的 const 限定对象。
通过 const_iterator(通常)间接为您提供对 const 的引用,因此您无法修改指向的对象。
const 对象不能(通常)被修改。因此,例如,您不能递增 const 限定的迭代器。