Я один из тех людей, которые думают: «Если это не должно быть в состоянии изменить, то это должно быть 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
Он не игнорирует это, он просто бесполезен, если вы возвращаете примитивные типы по значению.
Возврат по значению означает, что вы все равно не можете изменить то, что вы вернули, потому что это r-значение. Const будет излишним.
Увидеть:
int foo();
Как бы вы изменили возврат?
foo() = 4;
приведет к ошибке компилятора.
Если вы вернете ссылку, const имеет значение:
int& foo();
const int& goo();
foo() = 42; //okay
goo() = 42; //error
Других решений пока нет …