Мнения людей по этому вопросу расходятся. Я знаю некоторых вполне способных разработчиков, которые пишут это const для любого параметра, который должен не быть изменен локально в функции. По логике это просто последующее применение принципа правильности.
Что бы вы ни делали, вы должны опустить const в объявлении функции в заголовке. const
должен быть частью только в определении функции. В C (и C ++ тоже) есть правила, делающие эту совместимость (т. Е. const
для параметра значения игнорируется (когда он влияет на параметр только на его верхнем уровне) для объявлений чистой функции, которые не имеют тела). Обоснование состоит в том, что такой const
ничего не изменит в отношении вызывающей стороны и, таким образом, является подробностью реализации вызываемой функции.
Это не относится к вашему первому параметру. Любой способный разработчик, которого я знаю, поместит эту константу туда, потому что это дает важную гарантию вызывающей стороне вашей функции (что она не изменит данные, на которые указывает то, что передается). Имя вашего параметра, однако, кажется немного странным, потому что оно указывает, что функция должна записать то, на что указывает.
Обратите внимание, что для того, чтобы быть последовательным, вы должны сделать первый параметр сам по себе также константным, как вы сделали со вторым параметром. Таким образом, это стало бы (переименование его в «источник», чтобы избежать путаницы).
void do_something(const char * const source, const int size)