这些之间有什么区别(以Const方式):
const int getNum(int &a, int &b) const;
const int getNum(int &a, int &b);
int getNum(int &a, int &b) const;
谢谢!
答案 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
。