函数的Const声明

Const declaration of a function

本文关键字:声明 Const 函数      更新时间:2023-10-16

它们之间有什么区别(以Const方式):

  const int getNum(int &a, int &b) const;
  const int getNum(int &a, int &b);
  int getNum(int &a, int &b) 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没有意义。