3

我是这类人中的一员,他们认为“如果它不应该改变,那么它应该是const”。也许我const这样做会走极端,但是,由于我的函数返回类型通常不能更改,所以我将所有函数声明为 return 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

4

1 回答 1

9

它不会忽略它,如果您按值返回原始类型,它只是没用。

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

看:

int foo();

您将如何修改退货?

foo() = 4;

会产生编译器错误。

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

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

foo() = 42;  //okay 
goo() = 42;  //error
于 2013-09-01T17:01:15.107 回答