void someFunction(const string& A) const
最后一个const
意味着该方法不会改变*this
它内部引用的对象的状态。第一个const
是说该函数不会改变参数的状态 - 它与第二个没有任何关联const
,所以你可能有这个:
void someFunction(string& A) const
在这种情况下,函数可能会改变A
参数的状态,但它可能不会改变其对象的状态。
例如(这是一个高度假设的例子):
class MyIntArray
{
// some magic here in order to implement this array
public:
void copy_to_vector(std::vector<int> &v) const
{
// copy data from this object into the vector.
// this will modify the vector, but not the
// current object.
}
}
这是这两者结合的例子:
class MyOutput
{
char prefix;
// This class contains some char which
// will be used as prefix to all vectors passed to it
public:
MyOutput(char c):prefix(c){}
void output_to_cout(const std::vector<int> &i) const
{
// iterate trough vector (using const_iterator) and output each element
// prefixed with c - this will not change nor the vector
// nor the object.
}
}
哦,看看这个问题:Use of 'const' for function parameters