const指针数组

时间:2014-12-31 19:39:57

标签: c++ vector const

我想这是一个非常基本的问题。

当我声明一个const指针的向量时,像这样:

vector<const SomeClass*> vec;

它是一个声明指针是const还是数组元素指向的对象?

谢谢

2 个答案:

答案 0 :(得分:2)

vector<const SomeClass*> vec;

它声明了一个包含指向SomeClass类型的const对象的指针的向量。

答案 1 :(得分:2)

const可以有两个地方:

T* p1;                  // non-const pointer, non-const object
T const* p2;            // non-const pointer, const object
T* const p3;            // const pointer, non-const object
T const* const p4;      // const pointer, const object

从右到左阅读。因此,如果您将类型编写为T const而不是const T,则会更清楚(尽管在我的代码中我个人仍然更喜欢const T)。

您正在构建一个指向const对象的指针向量。请注意,您可以创建const指针的向量,因为向量要求其元素是可复制的(或者,在C ++ 11中,至少是可移动的),而const指针则不是。