g ++ компилятор игнорирует константный тип возврата

Я один из тех людей, которые думают: «Если это не должно быть в состоянии изменить, то это должно быть constВозможно, я возьму const делая это до крайности, но, поскольку тип возвращаемых функций обычно не должен меняться, я объявляю все свои функции возвращаемыми const, (Если они не вернутся void конечно — имеет ли смысл возвращаться const void?)

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

Я скомпилировал свою программу, используя g ++ 4.8, и включил переключатель компилятора -Wextra, При этом g ++ предупреждает меня, что игнорирует каждый из из моих ответных заявлений. Никто из них не возвращается const, Это не имеет никакого значения после компиляции, очевидно, но я хотел знать, есть ли способ заставить g ++ скомпилировать и обратить внимание на мой const возвращаемые типы.

Что еще более важно, почему g ++ игнорирует const — или это просто потому, что я псих и g ++ думает вернуться const не нужно?

По запросу: пример …

inline const bool collisionTest(...) { ... }

warning: type qualifiers ignored on function return type

3

Решение

Он не игнорирует это, он просто бесполезен, если вы возвращаете примитивные типы по значению.

Возврат по значению означает, что вы все равно не можете изменить то, что вы вернули, потому что это r-значение. Const будет излишним.

Увидеть:

int foo();

Как бы вы изменили возврат?

foo() = 4;

приведет к ошибке компилятора.

Если вы вернете ссылку, const имеет значение:

int& foo();
const int& goo();

foo() = 42;  //okay
goo() = 42;  //error
9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]