const 的含义问题?
我在学习C++ 类 的过程中看到了几种不同const的出现位置,但具体不能表述清楚各自的含义是什么。书上说的好像很抽象,也没怎么很清晰的理解到,故来求教了。
第一种:
const int(类类型) XXX; (定义某对象时,声明对象类型前面的const)
第二种:(函数中的const)
Class XX{
public:
void Func(const string XXX){函数体};
private:
XXXXX
};
第三种:(函数后面的const)
Class XX{
public:
int Getvalue() const;
private:
XXX
};
谁能较为清晰,成体系的告诉我一下,这几个const分别是代表了什么含义,它限制了一些什么行为?谢谢了。
[解决办法]
第一种:
const int(类类型) XXX; (定义某对象时,声明对象类型前面的const)
表示 xxx是一个常量,不能被修改
第二种:(函数中的const)
Class XX{
public:
void Func(const string XXX){函数体};
表示在函数Func中,xxx是一个常量,不能被修改
private:
XXXXX
};
第三种:(函数后面的const)
Class XX{
public:
int Getvalue() const;
表示Getvalue函数中,不会修改XX这个类中的任何数据
private:
XXX
};
[解决办法]
const只意味着只读,不表示不变。
除了第三个用法有意义,你的前面两个用法没有多大意义(语法OK,实际没有意义)。
const一般修饰函数指针/引用类型的形参,表示不会在函数改变其实参。
[解决办法]
const int(类类型) XXX;
这个是保证 int类型的 XXX 是不会(也不允许)被修改。
void Func(const string XXX){函数体}
这个是保证 string类型的实参是以常量传递进来的,在函数体内,是不允许修改这个实参的值
int Getvalue() const;
这个是保证 在函数提内,不会改变 XX类的对象的任意成员数据。但是有一种情况例外:用mutable关键字定义的成员数据,是可以在改函数的函数体内修改的。
针对第三种情况,举个例:
第三种:(函数后面的const)
Class XX{
public:
int Getvalue() const
{
++count;
retrun count;
}
private:
XXX
mutable int count;
};