2 qq 33555452 qq_33555452 于 2016.02.22 22:40 提问

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

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

6个回答

v5wcm
v5wcm   2016.02.22 23:21
已采纳

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

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

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

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

mengyin521
mengyin521   2016.02.22 23:43

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

mengyin521
mengyin521 回复qq_33555452: 服了 居然 我这回答没被采纳。。。行吧!
接近 2 年之前 回复
qq_33555452
qq_33555452 谢谢你的耐心解答
接近 2 年之前 回复
v5wcm
v5wcm   2016.02.22 23:15

类成员函数后面加上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();   //正确
v5wcm
v5wcm 回复qq_33555452: 常量成员函数对类的所有数据成员都不可以修改~
接近 2 年之前 回复
wuzhemei
wuzhemei
接近 2 年之前 回复
qq_33555452
qq_33555452 请问const成员函数 里面A的private的数据是不是不了更改?
接近 2 年之前 回复
xiaohuh421
xiaohuh421   Rxr 2016.02.23 11:57

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!