非类返回类型是否受益于 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中文网其他相关文章!