g ++编译器忽略const返回类型

时间:2013-09-01 16:59:54

标签: c++ g++ const ignore return-type

我是其中一类人,他们认为“如果它不能改变,那么它应该是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

1 个答案:

答案 0 :(得分:9)

它不会忽略它,如果按值返回原始类型,它就没用了。

按值返回意味着你不能修改你返回的任何东西,因为它是一个r值。 const是多余的。

请参阅:

int foo();

您如何修改退货?

foo() = 4;

会产生编译错误。

如果您返回引用,则const确实很重要:

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

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