我应该返回 const 对象还是指针?
在“Effective C Item 03”中,建议在可行的情况下使用 const。例如,Bigint 类可以同时具有可变版本和 const 版本的operator[] 函数来访问其数据。
但是,返回 const 对象和返回非 const 对象之间的区别较小对于像 foo() 这样返回原始类型的简单函数来说是清晰的。人们可能会认为它们的行为相同,但这并不完全正确。
顶级 cv 限定符和返回类型
对于原始类型,顶级 -返回类型上的级别 cv 限定符将被忽略。因此,以下函数声明在功能上是等效的:
<code class="cpp">int foo(); int const foo();</code>
两个函数都返回一个 int,无论返回类型上的 const 限定符如何。
类类型和类型的意义引用
在处理类类型或引用时,这种区别变得至关重要。返回 const T 可防止调用者对返回值调用非常量成员函数。考虑以下示例:
<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>
这里,gg() 返回一个 const Test 对象,该对象禁止调用其非常量成员函数 f()。
以上是我什么时候应该在 C 中返回 const 对象或指针?的详细内容。更多信息请关注PHP中文网其他相关文章!