哪位大神帮忙解释一下类成员函数后面加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. 返回的如果是非原生数据类型, 那么也是不可更改的.