我是C++的新手,请你解释一下为什么/我什么时候应该使用这个
int & MyArray::operator[] (const int i)
{
return arr[i];
}而不是这个
int & MyArray::operator[] (int i)
{
return arr[i];
}发布于 2014-01-10 10:53:44
这不会有太大的区别!
有些人喜欢把参数看作是不可变的,所以他们将参数标记为const。在这种情况下,这是一个文体的东西。
发布于 2014-01-10 10:56:48
在函数声明中,它完全没有区别,因为顶级的const被忽略了。
这两个声明实际上是相同的,因此,应该避免函数参数中的顶级const:
void foo(int);
void foo(const int); // re-declaration of above function在函数定义中,它意味着不能更改函数中参数的副本:
void foo(int i) { i++; } // OK
void foo(const int i) { i++; } // Error因此,它可以作为实现工件来表示局部变量是const。这为编译器提供了执行优化的更大范围。
发布于 2014-01-10 10:56:52
不要这样做。从来电者的角度来看,这是完全相同的,只是增加了视觉噪音。
参数i是通过值传递的,是一个普通的数据类型,它被复制,所以当您将它标记为const时,您告诉编译器它不能在方法中更改,但是由于它是一个副本,所以根本不重要,在这个特定的示例中,您只是将它用作索引。
https://stackoverflow.com/questions/21042437
复制相似问题