首页 >后端开发 >C++ >为什么非类返回类型的顶级常量看起来是多余的?

为什么非类返回类型的顶级常量看起来是多余的?

Linda Hamilton
Linda Hamilton原创
2024-11-04 07:56:02984浏览

Why Does Top-Level Const on Non-Class Return Types Seem Redundant?

非类返回类型是否受益于 Const?

在 C 中,const 的使用被强调为不可变的最佳实践数据处理。然而,用 const 限定非类返回类型似乎不会产生明显的差异:

<code class="cpp">int foo() { }
const int foo() { }</code>

那么,为什么存在这种区别,如 Bigint 类所示:

<code class="cpp">int& operator[](const int index);
const int operator[](const int index) const;</code>

解释:

应用于非类函数返回类型的顶级 const 限定符实际上被忽略,使得上面的两个声明相同。然而,引用的情况并非如此:

<code class="cpp">int& operator[](int index);
int const& operator[](int index) const;</code>

在这种情况下,这种区别是有意义的。

此外,返回类型的顶级 const 限定符在函数声明中同样会被忽略.

const 限定符的相关性也扩展到类返回类型。如果函数返回 T const,则任何在返回对象上调用非常量函数的尝试都会导致错误,如下所示:

<code class="cpp">class Test {
public:
    void f();
    void g() const;
};

Test ff();
Test const gg();

ff().f();             // legal
ff().g();             // legal
gg().f();             // illegal
gg().g();             // legal</code>

以上是为什么非类返回类型的顶级常量看起来是多余的?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn