哪位大神帮忙解释一下类成员函数后面加const什么意思

哪位大神帮忙解释一下类成员函数后面加const什么意思 尽量清晰点 谢谢大神 感觉c++好难的 附加问一句c语言数据结构c++应该怎么顺序来看这些书

原回答中第二段代码的注释有误,应该是”常量成员函数“(提交后竟然不能再编辑修改了...)。

C++语言和数据结构可以同步学,数据结构中用到的语言特性并不多。

 说明这个函数不能修改对象的字段:
class A
{
private: int x=1;
public: void foo() const
{
    //x=2; 错误,不能修改
        cout << x;
}
}

先学C/C++语言,再学数据结构。觉得难是因为你刚开始学,练得少。我小学开始学编程,一开始也觉得难。

类成员函数后面加上const修饰,作用是修改隐式this指针的类型。
举个例子:

class A
{
    private: 
    int x=1;
    public: 
    int foo1() {     //非常量成员函数
    return this->x;
    }
}
    const A A1;
    A1.foo1();   //非法,常量对象不能调用非常量成员函数

//默认情况下,this的类型 A*const,也就是说不能把this绑定在一个常量对象上。
//由于this是隐式的,所以就在成员函数后面加上const,相当于表示this是const A*const。

 class A
{
    private: 
    int x=1;
    public: 
    int foo1() const{     //非常量成员函数
    return this->x;
    }
}
    const A A1;
    A1.foo1();   //正确

函数加CONST 就是证明 这里面用到的数据成员 也都会按常量来处理,一些修改操作是不可行的。
C++ 可以先看 《C++ Primer》 然后看 《数据结构》可以和前者并行。
看完后 看 《Effective C++》(**很重要,这是规则,C++程序员分两种 一种是看过这本书的 一种是没看过这本书的**)
在这之中 穿插着看 《STL》和 《泛型编程》和 《嵌入式编程》 最后看 《设计模式》
可能在你不了解 设计模式的时候有些地方 不好理解。但是 只有扎实的基本功后 在去理解 设计模式 才能归为己用。
希望你能采纳我的意见 。。。

加了const,就意味着
1. 你调用这个函数不会改变对象的状态(即成员变量)
2. 返回的如果是非原生数据类型, 那么也是不可更改的.