C ++ и проблемы покрытия - PullRequest
       33

C ++ и проблемы покрытия

3 голосов
/ 23 января 2012
MyClass* const Func(const std::string& statename)

для этого покрытия дает ошибку

Определитель типа Parse warning (PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE) для возвращаемого типа не имеет смысла.

Нужно ли нам действительноубрать консту тут .?

Ответы [ 3 ]

6 голосов
/ 23 января 2012

Предупреждение верно. MyClass* const не требуется. Это должно быть просто MyClass*. Тем не менее, вам не нужно удалять его, но вы должны удалить его.

Причина в том, что теоретически MyClass* const предотвратит редактирование возвращаемого значения Func(). Но это в любом случае невозможно отредактировать даже без const, поскольку не является lvalue . См. demo здесь. Таким образом, с / без const компилятор всегда будет выдавать ошибку для попытки изменить возвращаемое значение Func().

4 голосов
/ 23 января 2012

const в типе возврата (MyClass* const) действительно совершенно бессмысленно. В то же время, это не причиняет вреда, кроме как сделать код более подробным. Я лично удалил бы это.

Чтобы понять, почему это бессмысленно, рассмотрим следующее:

MyClass* p = Func(statement);

Какую разницу сделал const?

Другими словами, возврат T* const концептуально не отличается от возврата const int.

3 голосов
/ 23 января 2012

Вам не нужно , чтобы удалить const, чтобы получить рабочий код, но код наверняка будет лучше без бессмысленного const.Вот что говорит слово «предупреждение» перед «ошибкой».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...