您的位置:首页 > 其它

类成员函数后带const

2009-01-07 00:28 323 查看
                                                                                      ——www.libcl.cn

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

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

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

贴上我以下的测试代码:
#include <iostream>
  
using namespace std;

class constTemp
{
    int a;

public:
    constTemp(int nA = 0) { a = nA ;}
    void seta(int nA);
    void printa()const;
};

void constTemp::seta(int nA)
{
    a = nA;
}

void constTemp::printa() const
{
    cout << "a'value is:" << a << endl;
}

int main()
{
    //此时声明的是一个const的对象,注意声明const对象必须确保该class有构造函数
    const constTemp cTTest;

    //printa()函数没修改任何成员变量所以还可以继续使用。
    cTTest.printa();

    //此时就不能再调用成员函数去修改成员变量,这是非法的。
    //cTTest.seta(5);

    cTTest.printa();

    return 0;

}
 
该例子主要呈现的结果是:“且如果声明这个类的一个const实例,这时则只能调用这个类中有const修饰的函数。”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class 百度 测试