我想这是一个非常基本的问题。
当我声明一个const指针的向量时,像这样:
vector<const SomeClass*> vec;
它是一个声明指针是const还是数组元素指向的对象?
谢谢
答案 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指针则不是。