一个函数的const声明
这个问题在这里已经有了答案:
这些是成员函数声明,大概不是常规函数。
const int getNum(int &a, int &b) const;
最左边的const
表示从该函数返回的int是常量。 这是一个相对无意义的区别 - 当然,int是不变的,但是在使用它之前,你会隐式地创建它的副本。 这对类返回类型有影响,但它仍然不是特别有用。
最右边的const
意味着可以在一个常量对象上调用成员函数,并且该函数不允许修改该对象。 实际上,函数内的this
指针将是常量。
const int getNum(int &a, int &b);
该const
在这里的含义最左边相同的const
在第一个例子中,返回值是恒定的。
int getNum(int &a, int &b) const;
的const
这里的含义与最右边的相同const
在第一示例中,隐式this
指针是恒定的。
const int swap(int &a, int &b);
返回一个不可更改的值
int swap(int &a, int &b) const;
返回可更改的值,但在其内部,没有一个变量可以在运行时更改。
const int swap(int &a, int &b) const;
两者
第一个和第三个是const
成员函数,这意味着它们可以在const
实例上调用,并且不会修改任何实例的字段。
第一个和第二个返回类型为const int
,这不是很有用,因为它们返回一个临时值,所以将该值设置为const
没有意义。