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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++ 类成员函数后面加 const关键字
这是用在类成员函数的声明和定义中, 例如 在 .h中    void fun()const; 在.cpp中    void Class::fun() const    {       ....    } 作用: 表示该函数可以被常量对象调用, 例如 const ClassA a; a.fun()   常量对象只能调用使用const的函数表示该函数可以操作成员,
类中成员函数声明后面的const的含义!
这个const一般是对类中成员函数属性的声明,但这个声明怪怪的,只能放在函数声明的尾部,大概是因为其它地方都已经被占用了。这个声明表示任这个函数不会修改类中的数据成员。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。 以下程序中,类stack的成员函数GetCount仅用于计数,从逻辑上讲GetCount应当为c
类成员函数后面加const
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参
C++关于类成员函数在参数列表后加const的作用,以及使用条件
C++关于类成员函数在参数列表后加const的作用,以及使用条件
C++ 笔记_类的成员函数以及const的作用
类内部,声明成员函数是必须的,而定义成员函数则是可选的,在类内部定义的函数默认为inline。在类外部定义的成员函数必须指明他们是在类的作用域中,将关键字const添加到函数形参后面,就可以将成员函数声明为常量: class PPAP::double pen() const; const成员不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,否则编译会报错。 在普
const(一):(转) 一个函数名后面加const表示什么意思
http://zjw86212.blog.163.com/blog/static/116692085200910394324880/   const用在成员函数后  主要是针对类的const对象     如:     class  Text{      public:            void  printconst(void)const{cout           voi
const(一): 一个函数名后面加const表示什么意思
http://zjw86212.blog.163.com/blog/static/116692085200910394324880/   const用在成员函数后   主要是针对类的const对象      如:      class   Text{      public:              void   printconst(void)const{cout<<"hello
一个函数名后面加const表示什么意思?
const用在成员函数后 主要是针对类的const 对象 如: class Text{ public: void printconst(void)const{cout<<"hello"<<endl;} void print(void){cout<<"hello"<<endl;} private: int k; }; const Text a; //上面定义了类Text的一常
C++ 成员函数 const 重载
众所周知,C++类实现函数重载有两种情况:函数参数的类型不同,参数的个数不同。而与函数的返回值没有什么关系。还有一种类成员函数重载,它并不要求函数的参数类型不同。下面给出例子: #include using namespace std; class A { public: A(int a):_a(a){} void print()const//函数体中不能修改数据成员对象,否
c++如下定义类函数后加冒号是什么意思 什么时候这么用
c++如下定义类函数后加冒号是什么意思 什么时候这么用 如 M( const char* in_file ):m_w(),m_object_morph(true) 这是对类成员初始化的意思,一般用于对父类成员初始化。 如果子类中有无参构造函数而而父类中没有声明,则程序会无法通过编译。举例如下: #include "stdafx.h" class testP { public: int