非类类型返回 Const 的意义
问题:
在 C 语言中,为什么我们需要使用 const int operator[](const int index) const 而不是 int operator[](const int index) const?
答案:
对于非类类型,返回类型上的顶级 const 限定符将被忽略。这意味着
int foo() {}
和
const int foo() {}
的返回类型都被解释为 int。但是,当返回引用时,const 变为非顶级并产生显着差异:
int& operator[](int index);
和
int const& operator[](int index) const;
是不同的。
类似,对于类类型的返回值,返回 T const 可以防止调用者对返回值调用非常量函数:
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
以上是对于 C 中的非类类型,为什么 `const int operator[](const int index) const` 优于 `int operator[](const int index) const` ?的详细内容。更多信息请关注PHP中文网其他相关文章!