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

g++ compiler ignoring const return type

本文关键字:const 返回类型 编译器 g++      更新时间:2023-10-16

我就是那种认为"如果它不应该改变,那么它应该是const"的人。也许我通过这样做将const发挥到了极致,但是,由于我的函数返回类型通常不能更改,所以我声明我的所有函数都返回const。(当然,除非他们返回void——通过const void返回是否有意义?)

你可能会认为,要么我有点疯了,我已经用光了我不需要的键盘打字的东西,要么返回const是有意义的,因为你自己已经用过了。或者你可能没有想到这两件事,在这种情况下我猜错了。

我已经使用g++4.8编译了我的程序,并启用了编译器开关-Wextra。这样做时,g++警告我,它会忽略我的return语句中的每一个。他们都没有在const返回。显然,编译后这没有什么区别,但我想知道是否有一种方法可以强制g++进行编译,并注意我的const返回类型。

更重要的是,为什么g++忽略const——或者只是因为我疯了,g++认为返回const是不必要的?

按要求:示例。。。

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

warning: type qualifiers ignored on function return type

它不会忽略它,如果您按值返回基元类型,它就没有用了。

按值返回意味着您无论如何都不能修改返回的内容,因为它是一个r值。常量将是多余的。

参见:

int foo();

您将如何修改退货?

foo() = 4;

会产生编译器错误。

不过,如果您返回一个引用,const确实很重要:

int& foo();
const int& goo();
foo() = 42;  //okay 
goo() = 42;  //error