MyTetra Share
Делитесь знаниями!
Как в C++ различать "константный указатель" и "указатель на константу"
Время создания: 27.06.2016 20:39
Текстовые метки: с++, указатель, const, константный
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/1453456732w6rf715d6o/text.html на raw.github.com

Для C++ еще есть известный пазл: константный указатель/указатель на константу. Применение слова ключевого слова const весьма вариативно:



int *const p1

int const* p2

const int* p3



Чтобы понимать, что при таких формах записи считается константой, можно воспользоваться простым правилом:


const модифицирует то, что написано прямо перед ним, за исключением (какой С++ без исключений) случая, когда это первое слово в строке. В этом случае, очевидно, модифицирует то, что прямо после.


И сразу легко понять что:



const int ** const p4



p4 - это константный указатель "* const" на указатель на константный int-тип "const int *".


Есть еще и другое мнемотическое правило для const модификатора, которое может упростить понимание. А именно:


Константно то, что слева от модификатора const.


Примеры:



Object(Object const& object); // константен обьект

Object(Object & const object); // ошибка: к ссылке не могут быть применены const/volatile модификаторы

Object(Object const* object); // константен обьект, указатель можно менять

Object(Object *const object); // обьект можно менять, указатель константен

Object(Object const *const object); // константен обьект и константен указатель



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования