2014-12-31 3 views
1

Я думаю, это очень простой вопрос.массив константных указателей

, когда я объявляю вектор константных указателей, например:

vector<const SomeClass*> vec; 

Является ли это свидетельством того, что указатели являются Const или объекты, которые на который указывает элемент массива?

благодаря

+0

Я думаю, вы можете найти эту страницу на часто задаваемых моделях C++. http://www.parashift.com/c++-faq/const-correctness.html –

+0

Возможный дубликат [в чем разница между const int \ *, const int \ * const, int const \ *] (http: // stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-int-const) – OMGtechy

ответ

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. Обратите внимание, что вы могли бы не создать вектор константных указателей, так как вектор требует, чтобы его элементы были скопируемыми (или, в C++ 11, хотя бы подвижными), а указатель const тоже не является.

2
vector<const SomeClass*> vec; 

Это объявляя вектор, содержащий указателей на константные объекты типа SomeClass.

Смежные вопросы