Согласно cplusplus.com, std::vector::operator[]
имеет два перегруженные:Почему у нас есть отдельные функции, возвращающие const и non-const?
reference operator[] (size_type n);
const_reference operator[] (size_type n) const;
Почему нам нужна версия функции const
? Или, Почему бы нам просто не написать одну функцию non-const?
Например, в следующем коде:
std::vector<int> a = {1, 2, 3, 4, 5};
int b = a[1] + a[3]; // Why does it matter if this is const?
Нет, они оба возвращают lvalues ... – Brian
@Brian Если у вас есть класс 'a' с функцией' const int & getInt() const', не будет ли 'a.getInt() = 5' незаконным? С другой стороны, если бы он вернул неконстантную ссылку, разве это не было бы законным? – dma1324