const修饰成员函数
在类的成员函数后面加const关键字,表示在成员函数中保证不会修改调用对象的成员变量。
注意:
1)mutable可以突破const的限制,被mutable修饰的成员变量,将永远处于可变的状态,在const修饰的函数中,mutable成员也可以被修改。
2)非const成员函数可以调用const成员函数和非const成员函数。
3)const成员函数不能调用非const成员函数。
4)非const对象可以调用const修饰的成员函数和非const修饰的成员函数。
5)const对象只能调用const修饰的成员函数,不能调用非cosnt修饰的成员函数。
这里出现了令人纠结的三个问题:
1、为什么要保护类的成员变量不被修改?
2、为什么用const保护了成员变量,还要再定义一个mutable关键字来突破const的封锁线?
3、到底有没有必要使用const和mutable这两个关键字?
保护类的成员变量不在成员函数中被修改,是为了保证模型的逻辑正确,通过用const关键字来避免在函数中错误的修改了类对象的状态。并且在所有使用该成员函数的地方都可以更准确的预测到使用该成员函数的带来的影响。而mutable则是为了能突破const的封锁线,让类的一些次要的或者是辅助性的成员变量随时可以被更改。没有使用const和mutable关键字当然没有错,const和mutable 关键字只是给了建模工具更多的设计约束和设计灵活性,而且程序员也可以把更多的逻辑检查问题交给编译器和建模工具去做,从而减轻程序员的负担。
标签:const,函数,成员,关键字,修饰,mutable From: https://www.cnblogs.com/tgfoven/p/17113874.html