и первое, что тип возвращаемого значения const
На самом деле, нет.Первый (т. Е. Первый const из const SomeClass* const
) означает, что тип возвращаемого значения - указатель на const.Это означает, что указанный объект нельзя изменить с помощью указателя.
Но что означает ключевое слово между типом возвращаемого значения и оператором?
Это часть типа.
const в имени типа всегда применяется к тому, что находится слева (кроме случаев, когда const является самым левым токеном, в этом случае он применяется справа).В этом случае есть *
на левой стороне const, который мы рассматриваем.Это означает, что указатель является константным, то есть сам указатель не может быть изменен.
Не имеет смысла возвращать константное значение неклассового типа (в данном случае константный указатель), поскольку константность не имеетвлияние на поведение программы.Некоторые компиляторы выдадут предупреждение, если вы сделаете это.Я рекомендую удалить рассматриваемое const.
Даже для типов классов, хотя в некоторых случаях это может иметь значение, я не знаю ни одного практического варианта использования для возврата значения const.Однако возвращение указателя или ссылки на const имеет смысл.