gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:58:43 24 4
gpt4 key购买 nike

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

您可能认为我有点疯狂,我的键盘打字我不需要,或者返回 const 是有意义的,因为您自己已经使用过它。或者,也许您没有考虑这些事情,在这种情况下我猜错了。

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

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

根据要求:示例...

内联 const bool collisionTest(...) { ... }

警告:函数返回类型忽略类型限定符

最佳答案

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

按值返回意味着无论如何都不能修改返回的内容,因为它是右值。 const 是多余的。

参见:

int foo();

您将如何修改返回?

foo() = 4;

会产生编译错误。

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

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

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

关于c++ - g++ 编译器忽略 const 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com