Const函数的声明

时间:2012-02-12 23:01:32

标签: c++ function const

这些之间有什么区别(以Const方式):

  const int getNum(int &a, int &b) const;

  const int getNum(int &a, int &b);

  int getNum(int &a, int &b) const;

谢谢!

3 个答案:

答案 0 :(得分:3)

这些是成员函数声明,可能不是常规函数。

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指针是常量。

答案 1 :(得分:1)

const int swap(int &a, int &b);

返回不可更改的值

  int swap(int &a, int &b) const;

返回可更改的值,但在其中没有任何一个变量可以在运行时更改。

 const int swap(int &a, int &b) const;

两者

答案 2 :(得分:1)

第一个和第三个是const成员函数,这意味着它们可以在const实例上调用,而不会修改任何实例的字段。

第一个和第二个具有返回类型const int,它不是很有用,因为它们返回一个临时值,所以没有必要设置该值const