Изменение элементов массива элемента const - PullRequest
2 голосов
/ 22 сентября 2011

Может кто-нибудь объяснить мне, почему работает следующий код:

#include <iostream>
class Vec 
{
    int *_vec;
    unsigned int _size;

public:
Vec (unsigned int size) : _vec (new int [size]), _size(size) {};
int & operator[] (const int & i) 
{
    return _vec[i];
}
int & operator[] (const int & i) const 
{
    return _vec[i];
}
};

int main () 
{
    const Vec v (3);
    v[1] = 15;
    std::cout << v[1] << std::endl;
}

Он компилируется и работает просто отлично, хотя мы меняем содержимое объекта const. Как это хорошо?

1 Ответ

2 голосов
/ 22 сентября 2011

Константность относится к членам класса. Вы не можете изменить значение v._vec, но нет проблем с изменением содержимого памяти, на которое указывает v._vec.

...