更改const对象的数组成员的元素

时间:2011-09-22 09:31:35

标签: c++ arrays class vector const

任何人都可以向我解释为什么以下代码有效:

#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 个答案:

答案 0 :(得分:2)

constness是关于班级成员的。您无法更改v._vec的值,但更改v._vec指向的内存内容没有问题。