const 的含义有关问题

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;
};

------解决方案--------------------
1、定义一个常量,C++中是极力推荐用const代替#define的;

2、你写的这个场景没什么意义,参数是局部变量,改不改对外部没影响,const修饰函数参数时,是明确指出不会修改传递进来的参数,原型是void Func(const string& XXX); void Func(const char* XXX); ...之类的;

3、const作为函数后缀时,是修饰成员函数的this指针的,作用与第二点是一样的。有些场景下,是必须加这个const的,例如:
           int f(const XX& src)
           {
                 return  src.Getvalue();
           }