——
www.libcl.cn
这篇文章主要记录我对"类成员函数后带const"的理解。
例子:
为什么在成员函数printa()后面加多一个const?
百度一下,看了别人的解释说: “这是把整个函数修饰为const,即‘函数体内不能对成员数据做任何改动‘;且如果声明这个类的一个const实例,这时则只能调用这个类中有const修饰的函数。”
我的理解是:成员函数void printa()const;不能对函数体内成员变量int a作任何修改。
贴上我以下的测试代码:
该例子主要呈现的结果是:“且如果声明这个类的一个const实例,这时则只能调用这个类中有const修饰的函数。”
这篇文章主要记录我对"类成员函数后带const"的理解。
例子:
- class constTemp
- {
- int a;
- public:
- constTemp(int nA = 0) { a = nA ;}
- void seta(int nA);
- void 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;
- }
7656

被折叠的 条评论
为什么被折叠?



