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

标签 c++ arrays class vector constants

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

#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 对象的内容,它也能正常编译和运行。怎么样?

最佳答案

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

关于c++ - 更改 const 对象的数组成员的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512569/

相关文章:

php - 如何在数组中回显 GROUP BY mysql?

python - __getattr__ 和 __getattribute__ 用于动态生成的类的类/静态属性

c++ - 我可以使用 C++ 中的指针分配特定的内存地址吗?

c++ - 无法在 Qt 中从 ‘QString’ 转换为 ‘LPCWSTR’

c++ - 使用前重置成员变量

arrays - 无冲突随机填充数组的算法

c++ - 初始化嵌套结构数组

c++ - 是否可以将 gcc 的链接器与 dlopen 结合使用?

c++ - 如何在 C++ 中使用类函数?

html - 引用 CSS 类