const和mutable关键字
const修饰变量表示改变量内容不可修改,在类中,const还可以修饰成员函数,修饰成员函数后就不可以更改成员变量了。
可以看出,this指针是const*const类型,既不可以修改其内容,也不能修改其指向。
想一下,有什么办法可以更改其const属性吗?自然而然会想到const_cast:
int getAge()const{Studnt* pStu = const_cast<Studnt*>(this);pStu->age = 1000;return age;}
通过这种方式可以修改成员变量的值。当然了C++11还有更简单的办法即mutable关键字:
mutalbe的意思是“可变”,和C++中的const相反,在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
class A
{public:A(){this->number = 0;}
private:mutable int number;
public:int getNum()const{this->number++;return this->number;}
};
int main()
{A a;cout << a.getNum() << endl;cout << a.getNum() << endl;return 0;
}
简单理解,mutable就是为了突破成员函数 const的限制,可以在const函数里面来修改被mutable修饰的成员变量。
const和mutable关键字相关推荐
- 【C++入门】const和mutable关键字、常函数介绍
1.常函数介绍 1.1.什么是常函数 (1)常函数的定义:类的成员函数对类中任何成员不作修改而只能作访问的函数:简单来说,就是调用类的成员函数不会对类做任何修改: (2)常函数的实现:常函数是依靠co ...
- 为什么用const保护了成员变量,还要再定义一个mutable关键字来突破const的封锁线?
为什么用const保护了成员变量,还要再定义一个mutable关键字来突破const的封锁线? 保护类的成员变量不在成员函数中被修改,是为了保证模型的逻辑正确,通过用const关键字来避免在函数中错误 ...
- 【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
这里写目录标题 1. 引言 1.1 mutable关键字的简介 2. mutable关键字的设计意图 (The Design Intent of the mutable Keyword) 2.1 为什 ...
- const、volatile、mutable关键字
const关键字 变量宏方面: const 修饰变量:常量非指针类型,非指针常量类型并没有什么区别. const修饰指针:常量指针:是指针不过指向的是常量可以进行p++操作不能进行*p操作:指针 ...
- 除了允许变量被const函数修改之外,'mutable'关键字是否有任何其他用途?
前段时间我遇到了一些用<code>mutable关键字标记类的成员变量的代码. 据我所知,它只是允许你修改const方法中的变量: class Foo { private: mutable ...
- C++基本功:全面掌握const、volatile和mutable关键字
C++ 程式设计过程中 ,const 的使用可以频度是非常高的 . 它在保证程式安全方面起到了不可估量的作用 . 用一句话来表达最确切不过了:"小兵立大功" . 有了 con ...
- 深入理解C++中的mutable关键字
深入理解C++中的mutable关键字 mutalbe的中文意思是"可变的,易变的",跟constant(既C++中的const)是反义词. 在C++中,mutable也是为了突破 ...
- C++中的mutable关键字
mutalbe的中文意思是"可变的,易变的",跟constant(既C++中的const)是反义词. 在C++中,mutable也是为了突破const的限制而设置的.被mutabl ...
- C++笔记-const与mutable、static_cast与reinterpret_cast
目录 const与mutable static_cast与reinterpret_cast const与mutable 如下代码: #include <iostream> using na ...
最新文章
- Codeforces 868F Yet Another Minimization Problem 决策单调性 (看题解)
- 关于vue2.0组件通信
- 面试官:线程顺序执行,这么多答案你都答不上来?
- 一图读懂《北京市数据中心统筹发展实施方案(2021-2023年)》
- python(numpy,pandas5)——numpy中copy 和 deep copy
- 为什么不能用python_为什么我不能用python加入这个线程?
- 牛客网数据开发题库_数据库刷题—牛客网(21-30)
- 一天学一个模式_第一天:策略模式
- 基于点云的三维重建_香港科技大学王煜教授:深度学习在物体三维重建中的应用...
- 烘烤店LOGO在线设计制作教程
- Android 进阶第二篇——性能优化
- 丹麦为NSA开绿灯 通过通信中心监控欧洲政客
- 【出版直播】博客园征途系列,《设计模式——基于C#的工程化实现及扩展》定价修改...
- php 有request,php实现httpRequest的方法
- 解决织梦CMS友情链接的字数个数限制
- 李炎恢PHP高端培训视频教程
- 十进制转格雷码 c语言,C语言输出格雷码
- Unity笔记-05
- myeclipse设置黑色主题
- exynos4412驱动程序教程.0