C++中关于const的一道习题不明白的地方

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:25:47
#include<iostream.h>
class K
{
public:
K(int i)
{
k=i;
}
int selk() const
{
return k;
}
private:
int k;
};
int add(const K& g1,const K& g2);
void main()
{
K k1(8),k2(17);
int s=add(k1,k2);
cout<<s<<endl;
}
int add(const K& g1,const K& g2)
{
int sum=g1.selk()+g2.selk();
return sum;
}

以上是一道书上的原代码。我想问几个问题:
(1)为什么类K中要使用const来修饰函数selk?常函数不是用来使用常数据的么?既然这个类中没有常数据,为什么要使用常函数来调用一般数据(private中的k)?
(2)add的函数形参为什么要定义成const?我试过把add定义和声明时的四个const都去掉,结果还是25啊~是不是有什么特别的原因,只是在这题中没有体现出来?

1. 函数后面的const表示该函数不会修改类内部状态,即成员变量的值。
2. 函数形参类型前的const表示所引用或所指向的是一个常对象,因为在函数内部运算的过程中不希望改变所引用或所指向对象的状态,所以用const修饰它们更为明智。