В свете комментариев здесь должно быть очевидно, что: char * s = "hello";
Это плохая идея, и ее следует использовать в очень узких рамках.
Это может быть хорошей возможностью указать на то, что "правильная константность" - это "хорошая вещь". Всегда и везде Вы можете использовать ключевое слово «const» для защиты своего кода от «расслабленных» вызывающих или программистов, которые обычно наиболее «расслаблены», когда в игру вступают указатели.
Достаточно мелодрамы, вот чего можно добиться, украсив указатели "const".
(Примечание: нужно читать объявления указателя справа налево.)
Вот 3 различных способа защитить себя при игре с указателями:
const DBJ* p means "p points to a DBJ that is const"
- то есть объект DBJ нельзя изменить с помощью p.
DBJ* const p means "p is a const pointer to a DBJ"
- то есть вы можете изменить объект DBJ через p, но вы не можете изменить сам указатель p.
const DBJ* const p means "p is a const pointer to a const DBJ"
- то есть вы не можете изменить сам указатель p, а также не можете изменить объект DBJ через p.
Ошибки, связанные с попытками мутаций констант-муравьев, обнаруживаются во время компиляции. Для const нет места во время выполнения или скорости.
(Предположим, вы используете компилятор C ++, конечно?)
- DBJ