为什么我被允许为包含常量指针的向量分配新地址?

Hug*_*ugo 1 c++ pointers constants vector

我认为标题清楚地解释了我的问题....考虑以下片段:

class Critter {
    int m_Age;
};

int main()
{
    vector<Critter* const> critters;
    for(int i = 0; i < 10; ++i)
        critters.push_back(new Critter());

    critters[2] = new Critter();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这条线不应该critters[2] = new Critter();是违法的吗?

谢谢

CB *_*ley 5

其实这条线应该是非法的(即使考虑#include <vector>using std::vector;):

vector<Critter* const> critters;
Run Code Online (Sandbox Code Playgroud)

因为要求在容器中使用的类型是可分配的,而任何const明显不可分配的类型.