【发布时间】:2014-01-10 10:51:45
【问题描述】:
我是 C++ 新手,请您解释一下为什么/何时应该使用它
int & MyArray::operator[] (const int i)
{
return arr[i];
}
而不是这个
int & MyArray::operator[] (int i)
{
return arr[i];
}
【问题讨论】:
-
这只是一个好习惯。如果您不打算修改参数的值,那么您不妨将其设为 const。
-
@AliAlamiri 只要你不在函数声明中这样做,因为那会误导。
-
@juanchopanza:为什么会误导你?通过您的回答,您显然知道这意味着什么。
-
@AliAlamiri 我的意思是,大多数代码用户查看的是声明,而不是定义。因此,我将定义中的
const视为不应在声明中表达的实现细节。但这只是我个人的喜好。 -
@juanchopanza: 啊,虽然我想我们可以声明
int &foo(int idx);并定义int &foo(int idx) [[const int idx]] {,或者一些这样的特殊语法来重新定义定义中的参数。这将避免混淆任何人(那些不希望在声明中看到不相关的const的人以及那些希望声明与定义匹配的人),代价是太丑了,没人会使用它。然后可以根据需要将const作为函数签名的一部分,因为我们有办法在不更改接口的情况下更改实现细节。
标签: c++ operator-overloading constants