g++编译器忽略const返回类型
g++ compiler ignoring const return type
我就是那种认为"如果它不应该改变,那么它应该是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
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 将返回类型专用化为 void 或 const 左值引用
- 用 decltype 和 auto 推导出 const(返回)类型
- 为什么当返回类型为 const 时可以修改返回值
- 作为返回类型"const int&"做什么?
- const 在具有尾随返回类型的自动退货声明中是什么意思
- 我应该在简单的访问成员函数中使用 const 返回类型吗?
- T const & 在函数的返回类型中是什么意思?
- 字符串的decltype和const引用返回类型
- 德尔福中C++“const”返回类型相当于什么
- g++编译器忽略const返回类型
- const*char类型中的返回值在获得值时立即被取消引用
- 当返回类型为静态const时,如果返回非静态局部会发生什么?
- 使用c++11 auto作为const函数对象的返回类型
- 函数声明返回类型中的Const关键字
- int* const* foo(int x);是一个有效的 C 函数原型。您如何"read"此返回类型?