我是其中一类人,他们认为“如果它不能改变,那么它应该是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
答案 0 :(得分:9)
它不会忽略它,如果按值返回原始类型,它就没用了。
按值返回意味着你不能修改你返回的任何东西,因为它是一个r值。 const是多余的。
请参阅:
int foo();
您如何修改退货?
foo() = 4;
会产生编译错误。
如果您返回引用,则const确实很重要:
int& foo();
const int& goo();
foo() = 42; //okay
goo() = 42; //error