类成员函数后带const

来源:互联网 发布:武汉达内大数据怎么样 编辑:程序博客网 时间:2024/06/08 04:29
                                                                                      ——www.libcl.cn

这篇文章主要记录我对"类成员函数后带const"的理解。

例子:
  1. class constTemp
  2. {
  3.     int a;
  4. public:
  5.     constTemp(int nA = 0) { a = nA ;}
  6.     void seta(int nA);
  7.     void printa()const;
  8. };
为什么在成员函数printa()后面加多一个const?
百度一下,看了别人的解释说:“这是把整个函数修饰为const,即‘函数体内不能对成员数据做任何改动‘;且如果声明这个类的一个const实例,这时则只能调用这个类中有const修饰的函数。”

我的理解是:成员函数void printa()const;不能对函数体内成员变量int a作任何修改。

贴上我以下的测试代码:
  1. #include <iostream>
  2.   
  3. using namespace std;
  4. class constTemp
  5. {
  6.     int a;
  7. public:
  8.     constTemp(int nA = 0) { a = nA ;}
  9.     void seta(int nA);
  10.     void printa()const;
  11. };
  12. void constTemp::seta(int nA)
  13. {
  14.     a = nA;
  15. }
  16. void constTemp::printa() const
  17. {
  18.     cout << "a'value is:" << a << endl;
  19. }
  20. int main()
  21. {
  22.     //此时声明的是一个const的对象,注意声明const对象必须确保该class有构造函数
  23.     const constTemp cTTest;
  24.     //printa()函数没修改任何成员变量所以还可以继续使用。
  25.     cTTest.printa();
  26.     //此时就不能再调用成员函数去修改成员变量,这是非法的。
  27.     //cTTest.seta(5);
  28.     cTTest.printa();
  29.     return 0;
  30. }
  31.  
该例子主要呈现的结果是:“且如果声明这个类的一个const实例,这时则只能调用这个类中有const修饰的函数。”

原创粉丝点击